List of usage examples for org.hibernate.event.spi MergeEvent getOriginal
public Object getOriginal()
From source file:it.cilea.core.spring.dao.hibernate.IdTransferringMergeEventListener.java
License:Apache License
/** * Hibernate 3.1 implementation of ID transferral. *///from w ww . j a v a 2s.com @Override protected void entityIsTransient(MergeEvent event, Map copyCache) { super.entityIsTransient(event, copyCache); SessionImplementor session = event.getSession(); EntityPersister persister = session.getEntityPersister(event.getEntityName(), event.getEntity()); // Extract id from merged copy (which is currently registered with // Session). Serializable id = persister.getIdentifier(event.getResult(), session); // Set id on original object (which remains detached). persister.setIdentifier(event.getOriginal(), id, session); }
From source file:org.babyfish.hibernate.event.ObjectModelMergeEventListener.java
License:Open Source License
protected void afterMerge(MergeEvent event) { Object original = event.getOriginal(); Object result = event.getResult(); //Merged transient or detached object with ObjectModel. if (original != result && Metadatas.has(original.getClass())) { JPAObjectModelMetadata objectModelMetadata = JPAMetadatas.of(original.getClass()); ObjectModel objectModel = (ObjectModel) objectModelMetadata.getFactory().get(original); for (AssociationProperty associationProperty : objectModelMetadata.getAssociationProperties() .values()) {// w w w.j a va 2 s. c om AssociationProperty oppositeProperty = associationProperty.getOppositeProperty(); if (oppositeProperty == null || !oppositeProperty.isReference()) { continue; } AssociatedEndpoint<?, ?> associatedEndpoint = objectModel .getAssociation(associationProperty.getId()); if (associatedEndpoint.isDisabled() || !associatedEndpoint.isLoaded()) { continue; } ObjectModelFactory<?> elementObjectModelFactory = oppositeProperty.getDeclaringObjectModelMetadata() .getFactory(); int oppositePropertyId = oppositeProperty.getId(); if (associatedEndpoint instanceof Collection<?>) { for (Object o : (Collection<?>) associatedEndpoint) { if (o != null) { ObjectModel elementObjectModel = (ObjectModel) elementObjectModelFactory.get(o); replaceBackReferenceToResult(event, elementObjectModel.getAssociation(oppositePropertyId)); } } } else if (associatedEndpoint instanceof Map<?, ?>) { for (Object o : ((Map<?, ?>) associatedEndpoint).values()) { if (o != null) { ObjectModel elementObjectModel = (ObjectModel) elementObjectModelFactory.get(o); replaceBackReferenceToResult(event, elementObjectModel.getAssociation(oppositePropertyId)); } } } else { Object o = ((Reference<?>) associatedEndpoint).get(); if (o != null) { ObjectModel elementObjectModel = (ObjectModel) elementObjectModelFactory.get(o); replaceBackReferenceToResult(event, elementObjectModel.getAssociation(oppositePropertyId)); } } } } }
From source file:org.granite.tide.hibernate4.HibernateDataChangeMergeListener.java
License:Open Source License
@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);// w ww.j ava2 s . c om return; } try { wrappedListener.onMerge(event); } catch (StaleObjectStateException e) { HibernateOptimisticLockException.rethrowOptimisticLockException(event.getSession(), e); } }
From source file:org.granite.tide.hibernate4.HibernateDataChangeMergeListener.java
License:Open Source License
@SuppressWarnings("rawtypes") @Override// w w w. jav a2s. com 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); } }