如何檢查JPA中的實體是否可以刪除並且不會引發數據完整性異常?我想到的唯一方法是逐個檢查所有引用的實體,或嘗試在事務中刪除然後回滾,但是還有其他更簡單的方法嗎?JPA檢查實體是否可以刪除
2
A
回答
3
如果「可刪除」你的意思是「如果在持久化上下文中存在的實體」,你已經回答了你的問題:
嘗試刪除事務,然後回滾
如果某樣東西去交易過程中錯誤的,那麼回滾
1
嗯,我用這個辦法......
public void doDelete() {
try {
deleteData();
} catch (RuntimeException runtimeException) {
if (getRootThrowable(runtimeException).getMessage().contains("violates foreign key constraint")) {
//can't delete entity
}
}
}
public static Throwable getRootThrowable(Throwable t) {
Throwable result = t;
while (result.getCause() != null) {
result = result.getCause();
}
return result;
}
我不是那個粉絲,但是它爲我做...
+0
我不得不在過去使用類似的東西;往往是醜陋的問題導致醜陋的解決方案。 – Durandal
+1
是的,我知道這很醜陋,但它已經在我的應用程序很長一段時間..老實說,它正在做的工作,因爲有時我不僅檢查「違反外鍵約束」,我也想知道其他錯誤.. 。@MagicMan –
相關問題
- 1. 檢查實體是否被刪除
- 2. 是否可以刪除「檢查元素」?
- 3. JPA - 刪除實體
- 4. 是否可以在JPA實體屬性級別編寫查詢
- 5. 使用JPA刪除實體
- 6. JPA:刪除子實體
- 7. JPA/Hibernate刪除「子」實體
- 8. JPA EntityManager不刪除實體
- 9. JPA /休眠刪除實體
- 10. Hibernate/JPA:是否可以在單個查詢中檢索異構實體?
- 11. 爲什麼JPA可以保存我的實體但它不能刪除實體?
- 12. JPA:更好的方法來檢查實體是否有關聯
- 13. EclipseLink/JPA EntityListener:檢查實體是否被修改
- 14. Cascade.All()是否可以刪除?
- 15. 如何檢查文件是否可以被刪除
- 16. 檢查一行是否可以在MySQL中刪除
- 17. 如何檢查我是否可以刪除文件?
- 18. 檢查列表是否可以添加/刪除項目?
- 19. 在PHP中,檢查文件是否可以被刪除
- 20. JPA實體是否可以有多個OneToMany關聯?
- 21. 是否可以通過擴展POJO來構建JPA實體?
- 22. JPA實體是否可以從接口方法繼承@Version?
- 23. 是否可以使用JPA刪除 - 創建某個表
- 24. 當孩子被刪除時,JPA是否可以處理刪除父對象?
- 25. 如何刪除所有JPA實體?
- 26. 無法刪除實體(JPA&Spring)
- 27. Spring Data JPA刪除子實體
- 28. 彈簧數據JPA不刪除實體
- 29. Hibernate(Spring JPA)子實體的刪除
- 30. JPA實體批量刪除不工作
你想知道父參考實體是否刪除? – CycDemo