回答我自己的问题。
我认为使用公共API不可能做到这一点。但是,如果您愿意忍受一些奶酪,则可以执行以下操作
SessionImplementor sessionImplementor = ((SessionImplementor)session); EntityPersister entityPersister = sessionImplementor.getFactory().getEntityPersister( clazz.getName() ); PersistenceContext persistenceContext = sessionImplementor.getPersistenceContext(); EntityKey entityKey = new EntityKey( id, entityPersister, EntityMode.POJO ); Object entity = persistenceContext.getEntity( entityKey ); if ( entity != null ) return entity; entity = persistenceContext.getProxy( entityKey ); if ( entity != null ) return entity; return null;
这依赖于hibernate的内部API,因此如果内部进行更改,将来可能无法使用。



