的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()'會把事務回滾,除非我丟失或者混淆了某些東西。 –
即使異常立即被捕獲?你有沒有嘗試過我的代碼? –