СПД получить идентификатор объекта
кто-нибудь знает как я могу сделать эквивалент этого в спящий режим:
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);