有谁知道我怎么能在休眠方式中做到这一点:
session.getIdentifier(instance);
JPA?
EntityManager有一个contains方法,但就是这样!
我正在编写一些代码,它们充当实体和存储在会话中的数据之间的转换器(因此,而不是仅存储类名并且存储了id的序列化对象)。
答案 0 :(得分:17)
在JPA 2.0中,您可以编写
em.getEntityManagerFactory().getPersistenceUnitUtil().getIdentifier(instance);
答案 1 :(得分:10)
有没有人知道我如何在使用JPA的hibernate(...)中完成相同的操作?
JPA 1.0没有等效的,所以如果你坚持使用JPA 1.0,你将不得不使用Hibernate的API:从Session
获取EntityManager
并使用{{3} }。
例如,使用JBoss(是的,getDelegate()
是Session#getIdentitifier(Object)
):
org.hibernate.Session session = (Session)manager.getDelegate();
session.getIdentifier(myEntity);
如果您使用的是JPA 2.0,请按not portable的建议使用PersistenceUnitUtil#getIdentity(Object)
。但这在JPA 1.0中不可用。