如何检查JPA中的实体是否可以删除并且不会抛出数据完整性异常?我想到的唯一方法是逐个检查所有被引用的实体,或者尝试在事务中删除然后回滚但是还有其他更简单的方法吗?
答案 0 :(得分:3)
如果“可以删除”是指“如果实体存在于持久性上下文中”,那么您已经回答了以下问题:
尝试在事务中删除然后回滚
如果在事务期间出现问题,则回滚
答案 1 :(得分: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;
}
我不喜欢这个,但它能为我做好工作......