我正在使用JPA進行數據持久化。JPA中SQL查詢觸發的時間問題
我無法解釋我的程序中的行爲。
我有有另一個實體B
爲member.In我的代碼實體A
我創建的A
新的實例,並在A
設置B
實例(從數據庫中獲取),然後我用EntityManager
保存A
。我正在使用容器管理的事務,因此所有事務都應該在方法結束時提交。
在非常相同的方法中,在堅持A
之後,我嘗試獲取類C
的實體。 C
,與A
一樣,具有B
作爲其成員。我使用JQPL查詢來獲取C
的B
的實例I的ID與之前與A
的實例相關聯。
問題是,在提取C
時,JPA也在執行SQL查詢以保存A
。我期望在事務結束時(即方法結束時)發生。 但它發生在我試圖取C
。如果我不提取C
,則在方法結束時發出用於保存A
的SQL查詢。
這種行爲的原因是什麼?
嗯....這是一個非常合理的點。萬分感謝。順便說一句,你怎麼知道JPA行爲的每一個細節。我每次都在繼續閱讀和試驗,但是現在這些問題還在不斷出現,我覺得很難解釋。任何好的資源? – Mandroid
不客氣。沒有一個涵蓋一切的學習資源。書籍,論壇,文章,實驗,深潛源代碼... –
你應該閱讀規範https://jcp.org/en/jsr/detail?id=338 恕我直言,這是非常清楚。 順便說一句,我的答案是正確的以防萬一...... –