我有一個包含當前頁面實體對象列表的managedbean。在創建一個新對象並在事務中使用persist()將其持久化到db之後;在另一個事務中,當我調用合併時(因爲實體由於之前的事務提交而處於分離狀態); entitymanager無法在持久化上下文中找到該對象,並向數據庫拋出選擇查詢。我錯過了什麼或者是正常的行爲?hibernate在持久保留後不會將實體添加到persistencecontext
更新:當我使用mysql數據庫和自動生成的Id列時存在上述問題。當我使用甲骨文的時候,我不使用序列來存儲ID;但仍然;持久化上下文應該知道生成的ID;還有什麼方法可以窺視持久性上下文以查看實體退出的情況;我正在使用休眠btw
但我打電話合併;爲什麼不能在不查詢數據庫的情況下合併? – x0r
由於合併意味着:將傳遞的分離實體的狀態複製到從數據庫檢索到的附加實體。由於你在另一個事務中,緩存是空的,它需要從數據庫加載實體。 –
對不起,我對這個環境很陌生--Hibernate JPA-所以我沒有你所見的堅實的知識;但是,沒有額外的select語句,相同的體系結構就可以運行一個Oracle。我認爲這與自動生成的ID有關;但我不知道爲什麼。我去做。 – x0r