休眠@ManyToOne级联混合

时间:2019-01-07 21:57:16

标签: hibernate jpa

最近,我一直在开发一个基础项目,并且遇到了一个场景。假设我有一个School,其中包含User个列表,这些列表可能具有新的或现有的地址,如下所示:

@Table("school") @Entity
class School {
    @OneToMany(cascade=CascadeType.ALL, mappedBy="school")
    private List<User> students;
}

@Table("user") @Entity
class User {
    @ManyToOne
    @JoinColumn(...)
    private School school;

    @ManyToOne(cascade=?)
    @JoinColumn(...)
    private Address address;
}

@Table("address") @Entity
class Address { ... } // No bi-directional relationship

每当我尝试坚持时,我都会得到输出:

  1. 如果School仅具有新地址的User s并且级联类型设置为ALLPERSIST,则保存{ {1}}正常工作。

  2. 如果School仅具有现有地址的School且省略了层叠类型,则在保存新的User时它会按预期工作。

    li>
  3. 使用新地址和现有地址保存包含School的{​​{1}}的新实例,并将CascadeType设置为School时,会抛出{{1} }。(我了解,因为列表中保存了地址)

  4. 在保存具有新地址和现有地址但未设置级联类型的混合User的{​​{1}}实例时,将按预期方式抛出临时异常。

我想知道是否有解决方案,而不是在保存ALL对象之前保存每个用户地址。

0 个答案:

没有答案