СПД получить идентификатор объекта

кто-нибудь знает как я могу сделать эквивалент этого в спящий режим:

session.getIdentifier(instance);

С JPA?

EntityManager имеет метод contains, но это в значительной степени!

Я пишу код, который действует как трансформатор между сущностями и данными, хранящимися в сеансе (поэтому вместо сериализованного объекта хранится только имя класса и идентификатор).

2 ответов


кто-нибудь знает как я могу сделать эквивалент этого в спящий режим (...) с помощью JPA?

JPA 1.0 не имеет эквивалента, поэтому, если вы застряли с JPA 1.0, вам придется использовать API Hibernate: получить Session С EntityManager и использовать Session#getIdentitifier(Object).

например, с JBoss (да,getDelegate() is не портативный):

org.hibernate.Session session = (Session)manager.getDelegate();
session.getIdentifier(myEntity);

если вы используете JPA 2.0, то используйте PersistenceUnitUtil#getIdentity(Object) as предложено axtavt. Но это недоступно в JPA 1.0.


в JPA 2.0 вы можете написать

em.getEntityManagerFactory().getPersistenceUnitUtil().getIdentifier(instance);