/** * Save the transient instance, assigning the right identifier * * @param event The initiating event. * * @return The entity's identifier value after saving. */ protected Serializable saveWithGeneratedOrRequestedId(SaveOrUpdateEvent event) { return saveWithGeneratedId( event.getEntity(), event.getEntityName(), null, event.getSession(), true ); }
if ( invokeUpdateLifecycle( entity, persister, source ) ) { reassociate( event, event.getObject(), event.getRequestedId(), persister ); return; cascadeOnUpdate( event, persister, entity );
protected Serializable performSaveOrUpdate(SaveOrUpdateEvent event) { EntityState entityState = getEntityState( event.getEntity(), event.getEntityName(), event.getEntry(), event.getSession() ); switch ( entityState ) { case DETACHED: entityIsDetached( event ); return null; case PERSISTENT: return entityIsPersistent( event ); default: //TRANSIENT or DELETED return entityIsTransient( event ); } }
/** * The given save-update event named a detached entity. * <p/> * Here, we will perform the update processing. * * @param event The update event to be handled. */ protected void entityIsDetached(SaveOrUpdateEvent event) { LOG.trace( "Updating detached instance" ); if ( event.getSession().getPersistenceContext().isEntryFor( event.getEntity() ) ) { //TODO: assertion only, could be optimized away throw new AssertionFailure( "entity was persistent" ); } Object entity = event.getEntity(); EntityPersister persister = event.getSession().getEntityPersister( event.getEntityName(), entity ); event.setRequestedId( getUpdateId( entity, persister, event.getRequestedId(), event.getSession() ) ); performUpdate( event, entity, persister ); }
/** * Handle the given update event. * * @param event The update event to be handled. */ public void onSaveOrUpdate(SaveOrUpdateEvent event) { final SessionImplementor source = event.getSession(); final Object object = event.getObject(); final Serializable requestedId = event.getRequestedId(); if ( requestedId != null ) { //assign the requested id to the proxy, *before* //reassociating the proxy if ( object instanceof HibernateProxy ) { ( (HibernateProxy) object ).getHibernateLazyInitializer().setIdentifier( requestedId ); } } // For an uninitialized proxy, noop, don't even need to return an id, since it is never a save() if ( reassociateIfUninitializedProxy( object, source ) ) { LOG.trace( "Reassociated uninitialized proxy" ); } else { //initialize properties of the event: final Object entity = source.getPersistenceContext().unproxyAndReassociate( object ); event.setEntity( entity ); event.setEntry( source.getPersistenceContext().getEntry( entity ) ); //return the id in the event object event.setResultId( performSaveOrUpdate( event ) ); } }
/** * If the user specified an id, assign it to the instance and use that, * otherwise use the id already assigned to the instance */ protected Serializable getUpdateId( Object entity, EntityPersister persister, Serializable requestedId, SessionImplementor session) throws HibernateException { if ( requestedId == null ) { return super.getUpdateId( entity, persister, requestedId, session ); } else { persister.setIdentifier( entity, requestedId, session ); return requestedId; } }
new DefaultSaveOrUpdateEventListener(), listenerArray );
/** * The given save-update event named a detached entity. * <p/> * Here, we will perform the update processing. * * @param event The update event to be handled. */ protected void entityIsDetached(SaveOrUpdateEvent event) { LOG.trace( "Updating detached instance" ); if ( event.getSession().getPersistenceContext().isEntryFor( event.getEntity() ) ) { //TODO: assertion only, could be optimized away throw new AssertionFailure( "entity was persistent" ); } Object entity = event.getEntity(); EntityTypeDescriptor entityDescriptor = event.getSession().getEntityDescriptor( event.getEntityName(), entity ); event.setRequestedId( getUpdateId( entity, entityDescriptor, event.getRequestedId(), event.getSession() ) ); performUpdate( event, entity, entityDescriptor ); }
/** * Handle the given update event. * * @param event The update event to be handled. */ public void onSaveOrUpdate(SaveOrUpdateEvent event) { final SessionImplementor source = event.getSession(); final Object object = event.getObject(); final Serializable requestedId = event.getRequestedId(); if ( requestedId != null ) { //assign the requested id to the proxy, *before* //reassociating the proxy if ( object instanceof HibernateProxy ) { ( ( HibernateProxy ) object ).getHibernateLazyInitializer().setIdentifier( requestedId ); } } // For an uninitialized proxy, noop, don't even need to return an id, since it is never a save() if ( reassociateIfUninitializedProxy( object, source ) ) { LOG.trace( "Reassociated uninitialized proxy" ); } else { //initialize properties of the event: final Object entity = source.getPersistenceContext().unproxyAndReassociate( object ); event.setEntity( entity ); event.setEntry( source.getPersistenceContext().getEntry( entity ) ); //return the id in the event object event.setResultId( performSaveOrUpdate( event ) ); } }
/** * If the user specified an id, assign it to the instance and use that, * otherwise use the id already assigned to the instance */ protected Serializable getUpdateId( Object entity, EntityPersister persister, Serializable requestedId, SessionImplementor session) throws HibernateException { if ( requestedId == null ) { return super.getUpdateId( entity, persister, requestedId, session ); } else { persister.setIdentifier( entity, requestedId, session ); return requestedId; } }
new DefaultSaveOrUpdateEventListener(), workMap );
protected Serializable performSaveOrUpdate(SaveOrUpdateEvent event) { EntityState entityState = getEntityState( event.getEntity(), event.getEntityName(), event.getEntry(), event.getSession() ); switch ( entityState ) { case DETACHED: entityIsDetached( event ); return null; case PERSISTENT: return entityIsPersistent( event ); default: //TRANSIENT or DELETED return entityIsTransient( event ); } }
if (invokeUpdateLifecycle(entity, persister, source)) { reassociate(event, event.getObject(), event.getRequestedId(), persister); return; cascadeOnUpdate( event, persister, entity );
/** * The given save-update event named a detached entity. * <p/> * Here, we will perform the update processing. * * @param event The update event to be handled. */ protected void entityIsDetached(SaveOrUpdateEvent event) { LOG.trace( "Updating detached instance" ); if ( event.getSession().getPersistenceContext().isEntryFor( event.getEntity() ) ) { //TODO: assertion only, could be optimized away throw new AssertionFailure( "entity was persistent" ); } Object entity = event.getEntity(); EntityPersister persister = event.getSession().getEntityPersister( event.getEntityName(), entity ); event.setRequestedId( getUpdateId( entity, persister, event.getRequestedId(), event.getSession() ) ); performUpdate( event, entity, persister ); }
/** * Handle the given update event. * * @param event The update event to be handled. */ public void onSaveOrUpdate(SaveOrUpdateEvent event) { final SessionImplementor source = event.getSession(); final Object object = event.getObject(); final Object requestedId = event.getRequestedId(); if ( requestedId != null ) { //assign the requested id to the proxy, *before* //reassociating the proxy if ( object instanceof HibernateProxy ) { ( (HibernateProxy) object ).getHibernateLazyInitializer().setIdentifier( requestedId ); } } // For an uninitialized proxy, noop, don't even need to return an id, since it is never a save() if ( reassociateIfUninitializedProxy( object, source ) ) { LOG.trace( "Reassociated uninitialized proxy" ); } else { //initialize properties of the event: final Object entity = source.getPersistenceContext().unproxyAndReassociate( object ); event.setEntity( entity ); event.setEntry( source.getPersistenceContext().getEntry( entity ) ); //return the id in the event object event.setResultId( performSaveOrUpdate( event ) ); } }
@Override protected Serializable saveWithGeneratedId( Object entity, String entityName, Object anything, EventSource source, boolean requiresImmediateIdAccess) { callbackHandler.preCreate( entity ); return super.saveWithGeneratedId( entity, entityName, anything, source, requiresImmediateIdAccess ); } }
/** * If the user specified an id, assign it to the instance and use that, * otherwise use the id already assigned to the instance */ protected Serializable getUpdateId( Object entity, EntityPersister persister, Serializable requestedId, SessionImplementor session) throws HibernateException { if ( requestedId == null ) { return super.getUpdateId( entity, persister, requestedId, session ); } else { persister.setIdentifier( entity, requestedId, session ); return requestedId; } }
new DefaultSaveOrUpdateEventListener(), workMap );
protected Object performSaveOrUpdate(SaveOrUpdateEvent event) { EntityState entityState = getEntityState( event.getEntity(), event.getEntityName(), event.getEntry(), event.getSession() ); switch ( entityState ) { case DETACHED: entityIsDetached( event ); return null; case PERSISTENT: return entityIsPersistent( event ); default: //TRANSIENT or DELETED return entityIsTransient( event ); } }
if (invokeUpdateLifecycle(entity, persister, source)) { reassociate(event, event.getObject(), event.getRequestedId(), persister); return; cascadeOnUpdate( event, persister, entity );