@Override public void forceLocked(Object entity, Object nextVersion) { version = nextVersion; loadedState[ persister.getVersionProperty() ] = version; // TODO: use LockMode.PESSIMISTIC_FORCE_INCREMENT //noinspection deprecation setLockMode( LockMode.FORCE ); persister.setPropertyValue( entity, getPersister().getVersionProperty(), nextVersion ); }
@Override public void postUpdate(Object entity, Object[] updatedState, Object nextVersion) { this.loadedState = updatedState; setLockMode( LockMode.WRITE ); if ( getPersister().isVersioned() ) { this.version = nextVersion; getPersister().setPropertyValue( entity, getPersister().getVersionProperty(), nextVersion ); } if( entity instanceof SelfDirtinessTracker ) { ( (SelfDirtinessTracker) entity ).$$_hibernate_clearDirtyAttributes(); } getPersistenceContext().getSession() .getFactory() .getCustomEntityDirtinessStrategy() .resetDirty( entity, getPersister(), (Session) getPersistenceContext().getSession() ); }
@Override public void forceLocked(Object entity, Object nextVersion) { version = nextVersion; final int versionIndex = descriptor.getHierarchy().getVersionDescriptor().getStateArrayPosition(); loadedState[ versionIndex ] = version; // TODO: use LockMode.PESSIMISTIC_FORCE_INCREMENT //noinspection deprecation setLockMode( LockMode.FORCE ); descriptor.getHierarchy().getVersionDescriptor() .getPropertyAccess() .getSetter() .set( entity, nextVersion, getDescriptor().getFactory() ); }
@Override public void postUpdate(Object entity, Object[] updatedState, Object nextVersion) { this.loadedState = updatedState; setLockMode( LockMode.WRITE ); if ( getDescriptor().getHierarchy().getVersionDescriptor() != null ) { this.version = nextVersion; getDescriptor().getHierarchy().getVersionDescriptor() .getPropertyAccess() .getSetter() .set( entity, nextVersion, getDescriptor().getFactory() ); } if( entity instanceof SelfDirtinessTracker ) { ( (SelfDirtinessTracker) entity ).$$_hibernate_clearDirtyAttributes(); } getPersistenceContext().getSession() .getFactory() .getCustomEntityDirtinessStrategy() .resetDirty( entity, getDescriptor(), (Session) getPersistenceContext().getSession() ); }