JPA:级联共享对象

时间:2013-11-24 19:32:51

标签: jpa cascade entitymanager

假设我有一个名为Record的类,与一个名为Artist的类有多对一的关系。

如果我这样定义级联选项:

class Record{

    @ManyToOne(cascade = CascadeType.ALL)
    private Artist artist;

    ...
}

假设我有一些由我的EntityManager管理的记录,其中一些记录共享同一个艺术家。 当我在Record对象上调用,更新,合并,分离,删除等时会发生什么? 艺术家会被删除吗?它会脱离吗?如果是这样,那么引用该Artist的其他Record类会发生什么?

1 个答案:

答案 0 :(得分:2)

由于您已将关联配置为cascade = CascadeType.ALL,因此对记录执行的所有操作也将在关联的Artist上完成。删除记录将删除艺术家。如果另一个记录也引用同一个艺术家,则会因外键约束异常(如果它们在数据库中正确配置)而失败。

在ManyToXxx关联上配置这样的级联没有多大意义。