final Object[] naturalIdValues = extractNaturalIdValues( state, descriptor ); final Object[] previousNaturalIdValues = previousState == null ? null : extractNaturalIdValues( previousState, descriptor
@Override public void handleSynchronization(EntityTypeDescriptor descriptor, Object pk, Object entity) { if ( descriptor.getHierarchy().getNaturalIdDescriptor() == null ) { // nothing to do return; } descriptor = locateProperDescriptor( descriptor ); final Object[] naturalIdValuesFromCurrentObjectState = extractNaturalIdValues( entity, descriptor ); final boolean changed = ! naturalIdXrefDelegate.sameAsCached( descriptor, pk, naturalIdValuesFromCurrentObjectState ); if ( changed ) { final Object[] cachedNaturalIdValues = naturalIdXrefDelegate.findCachedNaturalId( descriptor, pk ); naturalIdXrefDelegate.cacheNaturalIdCrossReference( descriptor, pk, naturalIdValuesFromCurrentObjectState ); naturalIdXrefDelegate.stashInvalidNaturalIdReference( descriptor, cachedNaturalIdValues ); removeSharedNaturalIdCrossReference( descriptor, pk, cachedNaturalIdValues ); } }
@Override public void manageLocalNaturalIdCrossReference( EntityTypeDescriptor descriptor, Object id, Object[] state, Object[] previousState, CachedNaturalIdValueSource source) { if ( descriptor.getHierarchy().getNaturalIdDescriptor() == null ) { // nothing to do return; } descriptor = locateProperDescriptor( descriptor ); final Object[] naturalIdValues = extractNaturalIdValues( state, descriptor ); // cache naturalIdXrefDelegate.cacheNaturalIdCrossReference( descriptor, id, naturalIdValues ); }
@Override public void handleSynchronization(EntityPersister persister, Serializable pk, Object entity) { if ( !persister.hasNaturalIdentifier() ) { // nothing to do return; } persister = locateProperPersister( persister ); final Object[] naturalIdValuesFromCurrentObjectState = extractNaturalIdValues( entity, persister ); final boolean changed = ! naturalIdXrefDelegate.sameAsCached( persister, pk, naturalIdValuesFromCurrentObjectState ); if ( changed ) { final Object[] cachedNaturalIdValues = naturalIdXrefDelegate.findCachedNaturalId( persister, pk ); naturalIdXrefDelegate.cacheNaturalIdCrossReference( persister, pk, naturalIdValuesFromCurrentObjectState ); naturalIdXrefDelegate.stashInvalidNaturalIdReference( persister, cachedNaturalIdValues ); removeSharedNaturalIdCrossReference( persister, pk, cachedNaturalIdValues ); } }
@Override public void manageSharedNaturalIdCrossReference( EntityPersister persister, final Serializable id, Object[] state, Object[] previousState, CachedNaturalIdValueSource source) { if ( !persister.hasNaturalIdentifier() ) { // nothing to do return; } if ( !persister.hasNaturalIdCache() ) { // nothing to do return; } persister = locateProperPersister( persister ); final Object[] naturalIdValues = extractNaturalIdValues( state, persister ); final Object[] previousNaturalIdValues = previousState == null ? null : extractNaturalIdValues( previousState, persister ); managedSharedCacheEntries( persister, id, naturalIdValues, previousNaturalIdValues, source ); }
@Override public void manageLocalNaturalIdCrossReference( EntityPersister persister, Serializable id, Object[] state, Object[] previousState, CachedNaturalIdValueSource source) { if ( !persister.hasNaturalIdentifier() ) { // nothing to do return; } persister = locateProperPersister( persister ); final Object[] naturalIdValues = extractNaturalIdValues( state, persister ); // cache naturalIdXrefDelegate.cacheNaturalIdCrossReference( persister, id, naturalIdValues ); }