private Serializable getProxyIdentifier(Object proxy) { return ( (HibernateProxy) proxy ).getHibernateLazyInitializer().getIdentifier(); }
@Override public Object getIdentifierFrom(Object entity) { return ((HibernateProxy) entity).getHibernateLazyInitializer().getIdentifier(); }
@Override public Object mapToIdFromEntity(final Object data) { if ( data == null ) { return null; } if ( data instanceof HibernateProxy ) { final HibernateProxy hibernateProxy = (HibernateProxy) data; return hibernateProxy.getHibernateLazyInitializer().getIdentifier(); } else { return AccessController.doPrivileged( new PrivilegedAction<Object>() { @Override public Object run() { final Getter getter = ReflectionTools.getGetter( data.getClass(), propertyData, getServiceRegistry() ); return getter.get( data ); } } ); } }
public static Object getIdentifier(SessionImplementor session, String entityName, Object obj) { if ( obj == null ) { return null; } if ( obj instanceof HibernateProxy ) { final HibernateProxy hibernateProxy = (HibernateProxy) obj; return hibernateProxy.getHibernateLazyInitializer().getIdentifier(); } return session.getEntityPersister( entityName, obj ).getIdentifier( obj, session ); }
@Override public void mapToMapFromEntity(Map<String, Object> data, final Object obj) { if ( obj == null ) { data.put( propertyData.getName(), null ); } else { if ( obj instanceof HibernateProxy ) { final HibernateProxy hibernateProxy = (HibernateProxy) obj; data.put( propertyData.getName(), hibernateProxy.getHibernateLazyInitializer().getIdentifier() ); } else { final Object value = AccessController.doPrivileged( new PrivilegedAction<Object>() { @Override public Object run() { final Getter getter = ReflectionTools.getGetter( obj.getClass(), propertyData, getServiceRegistry() ); return getter.get( obj ); } } ); data.put( propertyData.getName(), value ); } } }
id = ( (HibernateProxy) entity ).getHibernateLazyInitializer().getIdentifier();
private Number getRevisionNumber(Map versionsEntity) { AuditEntitiesConfiguration verEntCfg = enversService.getAuditEntitiesConfiguration(); String originalId = verEntCfg.getOriginalIdPropName(); String revisionPropertyName = verEntCfg.getRevisionFieldName(); Object revisionInfoObject = ( (Map) versionsEntity.get( originalId ) ).get( revisionPropertyName ); if ( revisionInfoObject instanceof HibernateProxy ) { return (Number) ( (HibernateProxy) revisionInfoObject ).getHibernateLazyInitializer().getIdentifier(); } else { // Not a proxy - must be read from cache or with a join return enversService.getRevisionInfoNumberReader().getRevisionNumber( revisionInfoObject ); } }
if ( obj instanceof HibernateProxy ) { final HibernateProxy proxy = (HibernateProxy) obj; data.put( propertyData.getName(), proxy.getHibernateLazyInitializer().getIdentifier() );
@Override public Object getIdentifier(Object entity) { if ( entity == null ) { throw new IllegalArgumentException( "Passed entity cannot be null" ); } if ( entity instanceof HibernateProxy ) { return ((HibernateProxy) entity).getHibernateLazyInitializer().getIdentifier(); } else if ( entity instanceof ManagedEntity ) { EntityEntry entityEntry = ((ManagedEntity) entity).$$_hibernate_getEntityEntry(); if ( entityEntry != null ) { return entityEntry.getId(); } else { // HHH-11426 - best effort to deal with the case of detached entities log.debug( "javax.persistence.PersistenceUnitUtil.getIdentifier may not be able to read identifier of a detached entity" ); return getIdentifierFromPersister( entity ); } } else { log.debugf( "javax.persistence.PersistenceUnitUtil.getIdentifier is only intended to work with enhanced entities " + "(although Hibernate also adapts this support to its proxies); " + "however the passed entity was not enhanced (nor a proxy).. may not be able to read identifier" ); return getIdentifierFromPersister( entity ); } }
if ( x instanceof HibernateProxy ) { xid = ( (HibernateProxy) x ).getHibernateLazyInitializer() .getIdentifier(); if ( y instanceof HibernateProxy ) { yid = ( (HibernateProxy) y ).getHibernateLazyInitializer() .getIdentifier();
if ( value instanceof HibernateProxy ) { HibernateProxy proxy = (HibernateProxy) value; id = proxy.getHibernateLazyInitializer().getIdentifier();
@Override public int getHashCode(Object x, SessionFactoryImplementor factory) { EntityPersister persister = getAssociatedEntityPersister( factory ); if ( !persister.canExtractIdOutOfEntity() ) { return super.getHashCode( x ); } final Serializable id; if ( x instanceof HibernateProxy ) { id = ( (HibernateProxy) x ).getHibernateLazyInitializer().getIdentifier(); } else { final Class mappedClass = persister.getMappedClass(); if ( mappedClass.isAssignableFrom( x.getClass() ) ) { id = persister.getIdentifier( x ); } else { id = (Serializable) x; } } return persister.getIdentifierType().getHashCode( id, factory ); }
private static Serializable determineEntityId( Object entity, AssociationType associationType, SharedSessionContractImplementor session, SessionFactoryImplementor sessionFactory) { if ( entity == null ) { return null; } if ( HibernateProxy.class.isInstance( entity ) ) { // entity is a proxy, so we know it is not transient; just return ID from proxy return ( (HibernateProxy) entity ).getHibernateLazyInitializer().getIdentifier(); } if ( session != null ) { final EntityEntry pcEntry = session.getPersistenceContext().getEntry( entity ); if ( pcEntry != null ) { // entity managed; return ID. return pcEntry.getId(); } } final EntityPersister persister = resolveEntityPersister( entity, associationType, session, sessionFactory ); return persister.getIdentifier( entity, session ); }
/** * Associate a proxy that was instantiated by another session with this session * * @param li The proxy initializer. * @param proxy The proxy to reassociate. */ private void reassociateProxy(LazyInitializer li, HibernateProxy proxy) { if ( li.getSession() != this.getSession() ) { final EntityPersister persister = session.getFactory().getMetamodel().entityPersister( li.getEntityName() ); final EntityKey key = session.generateEntityKey( li.getIdentifier(), persister ); // any earlier proxy takes precedence proxiesByKey.putIfAbsent( key, proxy ); proxy.getHibernateLazyInitializer().setSession( session ); } }
public static Object getTargetFromProxy(SessionFactoryImplementor sessionFactoryImplementor, HibernateProxy proxy) { if ( !proxy.getHibernateLazyInitializer().isUninitialized() || activeProxySession( proxy ) ) { return proxy.getHibernateLazyInitializer().getImplementation(); } final SharedSessionContractImplementor sessionImplementor = proxy.getHibernateLazyInitializer().getSession(); final Session tempSession = sessionImplementor == null ? sessionFactoryImplementor.openTemporarySession() : sessionImplementor.getFactory().openTemporarySession(); try { return tempSession.get( proxy.getHibernateLazyInitializer().getEntityName(), proxy.getHibernateLazyInitializer().getIdentifier() ); } finally { tempSession.close(); } }
@Override public Serializable getIdentifier(Object object) throws HibernateException { checkOpen(); checkTransactionSynchStatus(); if ( object instanceof HibernateProxy ) { LazyInitializer li = ( (HibernateProxy) object ).getHibernateLazyInitializer(); if ( li.getSession() != this ) { throw new TransientObjectException( "The proxy was not associated with this session" ); } return li.getIdentifier(); } else { EntityEntry entry = persistenceContext.getEntry( object ); if ( entry == null ) { throw new TransientObjectException( "The instance was not associated with this session" ); } return entry.getId(); } }
final LazyInitializer initializer = hibernateProxy.getHibernateLazyInitializer(); final String entityName = initializer.getEntityName(); final Serializable entityId = initializer.getIdentifier(); if ( enversService.getEntitiesConfigurations().isVersioned( entityName ) ) { final String entityClassName = enversService.getEntitiesConfigurations().get( entityName ).getEntityClassName();
id = hibernateProxy.getHibernateLazyInitializer().getIdentifier();
final Serializable id = li.getIdentifier(); if ( id == null ) { throw new IllegalArgumentException( "Could not determine identifier of proxy passed to evict()" );
@Test public void testProxyIdentifier() { TargetNotAuditedEntity rev1 = getAuditReader().find( TargetNotAuditedEntity.class, tnae1.getId(), 1 ); Assert.assertTrue( rev1.getReference() instanceof HibernateProxy ); HibernateProxy proxyCreateByEnvers = (HibernateProxy) rev1.getReference(); LazyInitializer lazyInitializer = proxyCreateByEnvers.getHibernateLazyInitializer(); Assert.assertTrue( lazyInitializer.isUninitialized() ); Assert.assertNotNull( lazyInitializer.getIdentifier() ); Assert.assertEquals( tnae1.getId(), lazyInitializer.getIdentifier() ); Assert.assertTrue( lazyInitializer.isUninitialized() ); Assert.assertEquals( uste1.getId(), rev1.getReference().getId() ); Assert.assertEquals( uste1.getStr(), rev1.getReference().getStr() ); Assert.assertFalse( lazyInitializer.isUninitialized() ); }