我正在使用Spring JPARepository與hibernate並且有一個關於實體更新的問題。 我通過傳遞一個單獨的實體來調用jparepository.save(實體),但是在跟蹤日誌中我也可以看到爲數據庫中的其他行發佈的更新語句。 在調用保存之前,我有一個findAll,一些實體的值正在改變。 但我只傳遞一個實體進行保存,但仍然保存所有更新的實體。 你能否提供這方面的任何信息?使用Hibernate SPRING JPA更新所有實體實例即使使用一個實體調用save也是如此
1
A
回答
3
當你從數據庫加載實體時,這個實體就是「被管實體」。 如果更改「管理實體」(稍後提交事務),則不需要明確保存它們。 (這就是「管理」的意思。)
但直到Hibernate不會立即更新數據庫,而是會等待:
- 您提交事務
- 調用
EntityManager.flush
或 - 你執行一些數據庫查詢或通過Hibernate保存! (當你繞過Hibernate和通過普通的JDBC執行例如查詢/春天JDBC模板,那麼你就需要調用
EntityManager.flush
第一,如果不是你可能不會看到不噴射沖洗數據(https://stackoverflow.com/a/29825882/280244))
而且這是你觀察到的:
- 1)加載一些實體,使他們成爲管理
- 2)修改它們,但冬眠還是不執行SQL更新
- 3)您查詢一些實體或保存一個實體,hibernate刷新更改
+0
謝謝拉爾夫。我知道了 –
相關問題
- 1. Spring JPA Crud Repository save()不更新實體
- 2. 使用jpa更新多個實體2
- 3. 使用JPA和Spring加載所選的Hibernate實體
- 4. 使用實體框架4.0更新分離的實體實例
- 5. 使用DBUnit測試JPA/Hibernate實體
- 6. 使用JPA批註在Hibernate中映射java.util.map <實體,實體
- 7. Spring Roo:使用JPA實體作爲DAO
- 8. 使用Hibernate/JPA事件監聽器來更新一個實體,當其他實體更新
- 9. 使用Hibernate調用實體方法
- 10. 使用JPA2一個實體更新
- 11. 使用EF5更新實體
- 12. 使用JPA刪除實體
- 13. deveoping實體類使用JPA
- 14. 在hibernate中使用合併後刷新實體實例?
- 15. 使用Linq-to-SQL更新實體 - 附加一個不是新的實體
- 16. 使用Eclipselink/JPA更改實體類型?
- 17. 如何讓Hibernate/Spring/JPA自動更新新實體的ID
- 18. 如何使用hibernate會話方法更新映射實體類的實例?
- 19. 使用JPA實體監聽堅持JPA實體
- 20. hibernate 4.3.6 save(實體)oracle
- 21. 使用Spring Data/JPA/Hibernate與分離實體測試保存調用
- 22. 如何使用單實例處理JPA中的實體?
- 23. 如何使用JPA/Hibernate的自動註冊實體:未知實體
- 24. 實體4.1用新子實體更新現有父實體
- 25. 如何使用JPA(Hibernate)創建與同一實體的關係?
- 26. 發現不是從另一個實體引用的所有JPA實體
- 27. JPA:使用現有ID合併實體
- 28. 使用具有GWT + EJB + JPA的實體
- 29. 使用實體框架更新一行
- 30. JPA實體類實例
您可以發佈您用來幫助人們查看實際發生的代碼。 –