0

我有个问题。我有一个包含子数据的域。我可以使用 Cascade delete 轻松删除它,但我的老师说我不能级联它。我的计划是当数据具有关联时,我将检索关联并将其显示给用户。到目前为止,我所拥有的是通过使用 try catch 来捕获它,并且我可以在 Eclipse 控制台上显示它。显示为:

java.sql.BatchUpdateException: Cannot delete or update a parent row: a foreign key constraint fails (EPS .EMPLOYEE_EMPLOYER , CONSTRAINTFK_EMPLOYEE_EMPLOYER_EMPLOYEE FOREIGN KEY (EMPLOYEE_ID ) REFERENCESEMPLOYEE (EMPLOYEE_ID))

由于它引发了一个 ajax 错误,我做了一个警报,上面写着You cannot delete this record because it has associated record/s.. 我想更具体一点。

然后我不知道下一步该怎么做。我想检索所有关联的数据并显示它。请帮忙。

4

1 回答 1

3

我不太明白你的“解决方案”。您正在谈论删除一个实体及其所有子实体。检索数据并向用户显示与它无关。

首先,我不确定为什么你的“老师”告诉你不要级联。这是使用级联的完美有效且适当的情况。考虑使用 delete-orphan 它将为您删除子实体。

如果你真的不想做级联。你需要做的是手动进行级联:如果你需要删除一个实体,首先获取它的所有孩子,先删除孩子,(这里可以考虑一个flush),然后删除实体本身。其实和Hibernate没有太大关系。这是您在使用 DB 时会遇到的正常问题。

于 2013-05-31T02:02:41.443 回答