的javax.persistence.EntityManager#contains(Object)
method's documentation说(部分):查看任意对象是否为JPA实体的正确方法是什么?
检查实例是属于当前的持久化上下文管理实体实例。 抛出:
IllegalArgumentException
- 如果不是实体
科JPA 2.1 specification 3.1.1表示:
运行时异常[例如
IllegalArgumentException
]由EntityManager
接口的方法[例如抛出作为contains(Object)
]而不是LockTimeoutException
将导致当前事务被标记为回滚,如果持久化上下文被加入到该事务。
那么,什么是检查任意对象(不知道它是否是实体,不知道它是否在持久化上下文中)既是实体又是持久化上下文的首选方法没有回滚当前的交易?
在什么情况下你:Java EE或SE?如果EE,你使用什么应用程序服务器无论你的环境如何,你是否尝试过我的代码(可能适用于SE)? –
GlassFish 3.1.2.2附带的EclipseLink。在一个任意的非实体对象上调用'contains()'会把事务回滚,除非我丢失或者混淆了某些东西。 –
即使异常立即被捕获?你有没有尝试过我的代码? –