给出2个对象,Person和Phone,其中他们的关系是Person(one)-Phone(很多)。 电话有可变类型,可以有4个可能的值:住宅,办公室,移动,传真。
是否可以在Person中将Phone关系映射两次,如下所示:
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将所有手机加载到列表中只需要手机...
这是可以做到的吗?如果是这样,这是正常的做法吗?
答案 0 :(得分:2)
我认为你的例子不起作用,因为你实际上每个人都有多个Phone
。 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)
答案 1 :(得分:0)
Phone
类(无论如何您需要区分住宅,办公室等),除非您居住在真正<的国家/地区/ em>长电话号码,取出它们的开销并不大: - )
干杯,