给定 2 个对象,Person 和 Phone,其中它们的关系是 Person(one)-Phone(many)。 电话具有变量类型,可以有 4 个可能的值:住宅、办公室、移动、传真。
是否可以在 Person 中映射两次电话关系,如下所示:
class Person {
@OneToMany(mappedBy = "person")
<Phone> phones; //this is for : Residential, Office, Fax only
@OneToOne(mappedBy = "person")
Phone mobile; //this is for Mobile
}
class Phone {
@ManyToOne
@JoinColumn(name = "person_fk")
Person person;
}
隔离的原因是有些屏幕我会显示手机号码但不需要加载其他电话号码,所以我认为我不需要 jpa 将所有手机加载到列表中而只需要手机...
这是可以做的事情吗?如果是这样,这是正常做法吗?
最佳答案
我认为您的示例不起作用,因为实际上每个人都有多个电话
。 Hibernate 不会区分手机并将手机映射到您的 mobile
除非您为每种类型的手机进行子类化,并且您有一个 MobilePhone
类,否则您可以将 Person
更改为
class Person {
@OneToMany(mappedBy = "person")
<Phone> phones; //this is for : Residential, Office, Fax only
@OneToOne(mappedBy = "person")
MobilePhone mobile; //this is for Mobile
}
这应该有效(我相信:P)
关于java - JPA 在同一父类中两次映射相同的子关系(不同的基数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13621972/