@Override public Object getLoadedValue() { if ( databaseSnapshot == null ) { databaseSnapshot = getDatabaseSnapshot( event.getSession(), persister, event.getEntityEntry().getId() ); } return databaseSnapshot[index]; }
private DirtyCheckAttributeInfoImpl(FlushEntityEvent event) { this.event = event; this.persister = event.getEntityEntry().getPersister(); this.numberOfAttributes = persister.getPropertyNames().length; }
/** * Performs all necessary checking to determine if an entity needs an SQL update * to synchronize its state to the database. Modifies the event by side-effect! * Note: this method is quite slow, avoid calling if possible! */ protected final boolean isUpdateNecessary(FlushEntityEvent event) throws HibernateException { EntityPersister persister = event.getEntityEntry().getPersister(); Status status = event.getEntityEntry().getStatus(); if ( !event.isDirtyCheckPossible() ) { return true; } else { int[] dirtyProperties = event.getDirtyProperties(); if ( dirtyProperties != null && dirtyProperties.length != 0 ) { return true; //TODO: suck into event class } else { return hasDirtyCollections( event, persister, status ); } } }
private boolean isUpdateNecessary(final FlushEntityEvent event, final boolean mightBeDirty) { final Status status = event.getEntityEntry().getStatus(); if ( mightBeDirty || status == Status.DELETED ) { // compare to cached state (ignoring collections unless versioned) dirtyCheck( event ); if ( isUpdateNecessary( event ) ) { return true; } else { if ( SelfDirtinessTracker.class.isInstance( event.getEntity() ) ) { ( (SelfDirtinessTracker) event.getEntity() ).$$_hibernate_clearDirtyAttributes(); } event.getSession() .getFactory() .getCustomEntityDirtinessStrategy() .resetDirty( event.getEntity(), event.getEntityEntry().getPersister(), event.getSession() ); return false; } } else { return hasDirtyCollections( event, event.getEntityEntry().getPersister(), status ); } }
protected boolean handleInterception(FlushEntityEvent event) { SessionImplementor session = event.getSession(); EntityEntry entry = event.getEntityEntry(); EntityPersister persister = entry.getPersister(); Object entity = event.getEntity(); //give the Interceptor a chance to modify property values final Object[] values = event.getPropertyValues(); final boolean intercepted = invokeInterceptor( session, entity, entry, values, persister ); //now we might need to recalculate the dirtyProperties array if ( intercepted && event.isDirtyCheckPossible() ) { dirtyCheck( event ); } return intercepted; }
/** * Convenience method to retrieve an entities next version value */ private Object getNextVersion(FlushEntityEvent event) throws HibernateException { EntityEntry entry = event.getEntityEntry(); EntityPersister persister = entry.getPersister(); if ( persister.isVersioned() ) { Object[] values = event.getPropertyValues(); if ( entry.isBeingReplicated() ) { return Versioning.getVersion( values, persister ); } else { int[] dirtyProperties = event.getDirtyProperties(); final boolean isVersionIncrementRequired = isVersionIncrementRequired( event, entry, persister, dirtyProperties ); final Object nextVersion = isVersionIncrementRequired ? Versioning.increment( entry.getVersion(), persister.getVersionType(), event.getSession() ) : entry.getVersion(); //use the current version Versioning.setVersion( values, nextVersion, persister ); return nextVersion; } } else { return null; } }
final EntityEntry entry = event.getEntityEntry(); final EventSource session = event.getSession(); final EntityPersister persister = entry.getPersister();
final Object[] values = event.getPropertyValues(); final SessionImplementor session = event.getSession(); final EntityEntry entry = event.getEntityEntry(); final EntityPersister persister = entry.getPersister(); final Serializable id = entry.getId(); else if ( entry.getStatus() == Status.DELETED && !event.getEntityEntry().isModifiableEntity() ) {
private boolean scheduleUpdate(final FlushEntityEvent event) { final EntityEntry entry = event.getEntityEntry(); final EventSource session = event.getSession(); final Object entity = event.getEntity();
FlushEntityEventListener.onFlushEntity(FlushEntityEvent event) EntityEvent entityEvent = event.getEntityEntry(); EntityPersister persister = entityEvent.getPersister(); SessionFactoryImplementor sessionFactoryImplor = persister.getFactory(); Session session = sessionFactoryImplor.getCurrentSession();
@Override public Object getLoadedValue() { if ( databaseSnapshot == null ) { databaseSnapshot = getDatabaseSnapshot( event.getSession(), descriptor, event.getEntityEntry().getId() ); } return databaseSnapshot[index]; }
@Override public Object getLoadedValue() { if ( databaseSnapshot == null ) { databaseSnapshot = getDatabaseSnapshot( event.getSession(), persister, event.getEntityEntry().getId() ); } return databaseSnapshot[ index ]; }
private DirtyCheckAttributeInfoImpl(FlushEntityEvent event) { this.event = event; this.persister = event.getEntityEntry().getPersister(); this.numberOfAttributes = persister.getPropertyNames().length; }
private DirtyCheckAttributeInfoImpl(FlushEntityEvent event) { this.event = event; this.descriptor = event.getEntityEntry().getDescriptor(); this.numberOfAttributes = descriptor.getPropertyNames().length; }
private DirtyCheckAttributeInfoImpl(FlushEntityEvent event) { this.event = event; this.persister = event.getEntityEntry().getPersister(); this.numberOfAttributes = persister.getPropertyNames().length; }
@Override public Object getLoadedValue() { if ( databaseSnapshot == null ) { databaseSnapshot = getDatabaseSnapshot( event.getSession(), persister, event.getEntityEntry().getId() ); } return databaseSnapshot[ index ]; }
private boolean deleted(FlushEntityEvent event) { return event.getEntityEntry().getStatus() == Status.DELETED; }
private boolean deleted(FlushEntityEvent event) { return event.getEntityEntry().getStatus() == Status.DELETED; }
@Override public void onFlushEntity(FlushEntityEvent event) throws HibernateException { String[] properties = event.getEntityEntry().getPersister().getPropertyNames(); Object[] loadedState = event.getEntityEntry().getLoadedState(); } }
protected boolean handleInterception(FlushEntityEvent event) { SessionImplementor session = event.getSession(); EntityEntry entry = event.getEntityEntry(); EntityTypeDescriptor entityDescriptor = entry.getDescriptor(); Object entity = event.getEntity(); //give the Interceptor a chance to modify property values final Object[] values = event.getPropertyValues(); final boolean intercepted = invokeInterceptor( session, entity, entry, values, entityDescriptor ); //now we might need to recalculate the dirtyProperties array if ( intercepted && event.isDirtyCheckPossible() ) { dirtyCheck( event ); } return intercepted; }