如何级联删除属于jpa实体的集合?

@Entity

public class Report extends Model {

public Date date;

public double availability;

@ElementCollection

@Cascade(value={CascadeType.ALL})

public Map<FaultCategory, Integer> categories;

}

在我的一项工作中,我有以下代码:

int n = MonthlyReport.delete("date = ?", date);

这始终无法删除具有以下错误的实体:

DELETE语句与REFERENCE约束“ FK966F0D9A66DB1E54”冲突。数据库“ TFADB”的表“

dbo.MonthlyReport_categories”的列“ MonthlyReport_id”中发生了冲突。

我如何指定映射,以便在删除报告时删除category集合中的元素?

回答:

级联删除(通常是级联操作)仅在通过操作完成时有效EntityManager。当通过JP QL /

HQL查询作为批量删除完成删除时不可以。您无法指定在ElementCollection通过查询完成删除时将删除链接到元素的映射。

ElementCollection注释没有层叠属性,因为操作始终是层叠的。通过删除实体时EntityManager.remove(),操作会级联到ElementCollection

您必须获取MonthlyReport要删除的所有实体,并EntityManager.remove为每个实体调用。看起来,在Play框架中,您也可以在实体中调用delete-

method来代替它。

以上是 如何级联删除属于jpa实体的集合? 的全部内容, 来源链接: utcz.com/qa/404367.html

回到顶部