0
我有一個實體可以引用同一個實體的另一個對象。當我想要刪除數據庫中的對象時,我可以得到一個ConstraintViolation。因此,我首先搜索具有要刪除的對象的引用的實體,並將該值設置爲null。我使用criteriaBuilder執行此操作並執行批量更新。 之後我刪除了實體。在下一個select語句中出現錯誤:使用Hibernate和幾個EntityManager刪除數據
org.hibernate.TransientPropertyValueException: object references an unsaved transient instance
這可能是因爲我使用了兩個不同的entityManager實例。第一個是批量更新,第二個是刪除實體。 那麼當第二個entityManager進行刷新時會發生什麼?來自第一個entityManager的數據是否在數據庫中更改?如果是這樣,數據庫中的語句執行的順序是什麼? 還是我犯了另一個錯誤? 謝謝!
你應該使用cascadeType – Vaseph
我通常想獲得ConstraintViolation,因爲它不應該能夠刪除這些數據。但在特殊情況下,應該允許從數據庫中刪除數據。 但是,只是爲了學習一些東西:cascadeType是哪一個可供選擇的? – Markus
你可以使用CascadeType.ALL – Vaseph