public Object[] applyChanges(ChangeSet changeSet) { Set<Object> cache = new HashSet<Object>(); Object[] appliedChanges = new Object[changeSet.getChanges().length]; for (int i = 0; i < changeSet.getChanges().length; i++) appliedChanges[i] = applyChange(changeSet.getChanges()[i], cache); return appliedChanges; }
@Override public void onMerge(MergeEvent event) throws HibernateException { if (event.getOriginal() instanceof ChangeSetProxy || event.getOriginal() instanceof ChangeSet) { ChangeSet changeSet = event.getOriginal() instanceof ChangeSet ? (ChangeSet)event.getOriginal() : ((ChangeSetProxy)event.getOriginal()).getChangeSetProxyData(); Object result = new ChangeSetApplier(new HibernatePersistenceAdapter(event.getSession())).applyChanges(changeSet)[0]; event.setResult(result); return; } try { wrappedListener.onMerge(event); } catch (StaleObjectStateException e) { HibernateOptimisticLockException.rethrowOptimisticLockException(event.getSession(), e); } }
Long version = getVersion(e); if ((change.getVersion() != null && change.getVersion().longValue() < version) || (change.getVersion() == null && version != null)) persistenceAdapter.throwOptimisticLockException(entity); Object value = converters.convert(mergeObject(collectionChange.getValue(), cache), elementType); ((Set<Object>)collection).add(value); Object value = converters.convert(mergeObject(collectionChange.getValue(), cache), elementType); ((List<Object>)collection).add((Integer)collectionChange.getKey(), value); Object key = converters.convert(mergeObject(collectionChange.getKey(), cache), keyType); Object value = converters.convert(mergeObject(collectionChange.getValue(), cache), valueType); ((Map<Object, Object>)collection).put(key, value); Object value = converters.convert(mergeObject(collectionChange.getValue(), cache), elementType); Object removed = ((Set<Object>)collection).remove(value); cache.add(removed); Object key = converters.convert(mergeObject(collectionChange.getKey(), cache), keyType); Object removed = ((Map<Object, Object>)collection).remove(key); cache.add(removed); Object value = converters.convert(mergeObject(collectionChange.getValue(), cache), elementType); ((List<Object>)collection).set(index, value); Object key = converters.convert(mergeObject(collectionChange.getKey(), cache), keyType); Object value = converters.convert(mergeObject(collectionChange.getValue(), cache), valueType); ((Map<Object, Object>)collection).put(key, value);
Object element = icoll.next(); if (element != null) { Object newElement = mergeObject(element, cache); if (newElement != element) { if (coll instanceof List<?>) if (element == null) continue; Object newElement = mergeObject(element, cache); if (newElement != element) Array.set(value, idx, newElement); Object val = me.getValue(); if (val != null) { Object newVal = mergeObject(val, cache); if (newVal != val) me.setValue(newVal); Object newKey = mergeObject(key, cache); if (newKey != key) { ime.remove(); Object newValue = mergeObject(value, cache); if (newValue != value) { try {
@SuppressWarnings("rawtypes") @Override public void onMerge(MergeEvent event, Map copiedAlready) throws HibernateException { if (event.getOriginal() instanceof ChangeSetProxy || event.getOriginal() instanceof ChangeSet) { ChangeSet changeSet = event.getOriginal() instanceof ChangeSet ? (ChangeSet)event.getOriginal() : ((ChangeSetProxy)event.getOriginal()).getChangeSetProxyData(); Object result = new ChangeSetApplier(new HibernatePersistenceAdapter(event.getSession())).applyChanges(changeSet)[0]; event.setResult(result); return; } try { wrappedListener.onMerge(event, copiedAlready); } catch (StaleObjectStateException e) { HibernateOptimisticLockException.rethrowOptimisticLockException(event.getSession(), e); } } }