コード例 #1
0
 /**
  * Will be called directly before an object will be saved.
  *
  * @param obj
  * @return id of the inserted objects if saved manually inside this method or null if the object
  *     has to be saved by save method (default).
  */
 public Serializable onBeforeSave(final Session session, final Object obj) {
   if (obj instanceof HistoryEntry) {
     final HistoryEntry entry = (HistoryEntry) obj;
     final Integer origEntityId = entry.getEntityId();
     final String entityClassname = entry.getClassName();
     final Serializable newId = getNewId(entityClassname, origEntityId);
     final List<PropertyDelta> delta = entry.getDelta();
     Serializable id = null;
     if (newId != null) {
       // No public access, so try this:
       invokeHistorySetter(entry, "setEntityId", Integer.class, newId);
     } else {
       log.error(
           "Can't find mapping of old entity id. This results in a corrupted history: " + entry);
     }
     invokeHistorySetter(entry, "setDelta", List.class, null);
     id = save(entry);
     final List<PropertyDelta> list = new ArrayList<PropertyDelta>();
     invokeHistorySetter(entry, "setDelta", List.class, list);
     for (final PropertyDelta deltaEntry : delta) {
       list.add(deltaEntry);
       save(deltaEntry);
     }
     this.historyEntries.add(entry);
     return id;
   }
   return null;
 }