我没有冬眠的经验。现在,我正试图找出如何在多个关联中正确映射一个实体。让我澄清一下。假设我们有学生和经理实体。这两个实体应该与Address实体有一个OneToMany关联。首先,我知道我们需要在地址实体中保留学生或经理的参考资料。类似于下面的片段:
class Student{
@Id
public long id;
@OneToMany(mappedBy="student")
public Set<Address> addresses;
//getters and setters
}
class Manager{
@Id
public long id;
@OneToMany(mappedBy="manager")
public Set<Address> addresses;
//getters and setters
}
class Address{
@Id
public long id;
@ManyToOne
public Student student
@ManyToOne
public Manager manager;
}我不确定这是不是正确的方法。看上去不太对劲。如果我们有另一个需要地址的实体,那么在Address类中需要另一个属性。那么,我如何正确地映射与其相关的其他实体中的地址实体呢?谢谢
发布于 2020-06-23 16:23:28
您不需要@OneToMany关系;@ElementCollection允许您实现此映射。你可以有多个实体(学生,经理,不管.)引用相同的可嵌入Address类。
ElementCollection映射可用于定义可嵌入对象的集合。这不是可嵌入对象的典型用法,因为对象不是嵌入在源对象的表中,而是存储在单独的集合表中。这与OneToMany类似,但目标对象是可嵌入的,而不是实体。
地址类别:
@Embeddable
public class Address {
// ...
}学生班:
public class Student{
// ...
@ElementCollection
private List<Address> addresses;
//getters and setters
}经理班:
class Manager{
// ...
@ElementCollection
private List<Address> addresses;
//getters and setters
}https://stackoverflow.com/questions/62538323
复制相似问题