大家好我无法扩展实体并将它们持久化到数据库,我的模型已经有了,
人 - 必须坚持的基础实体
朋友 - 叶子实体
同事 - 叶子实体
当我从数据库中找到一个人然后我想“让它成为朋友”而不是创建另一个具有相同值的People行时,问题就出现了,我想采用现有的行。
我使用加入策略有我的继承策略。
任何线索??
答案 0 :(得分:2)
我打赌你的意思是“叶子实体”是“朋友和同事继承人”,对吗?
您尝试实现的目标不适合使用继承。
以简单的OO方式思考:
你已经实例化了一个“人”(正如其他评论所暗示的那样,使用Person而不是People更合理),你不能让那个实例成为“朋友”。
您应该考虑将Friend / Coworker分开实体,并将它们视为Person携带的额外属性。 e.g。
@Entity
class Person {
@OneToOne(mappedBy="people")
FriendAttribute friendAttribute;
@OneToOne(mappedBy="people")
CoworkerAttribute coworkerAttribute;
}
@Entity
class FriendAttribute {
@OneToOne
Person person;
// other friend-related attributes
}
@Entity
class CoworkerAttribute {
@OneToOne
Person person;
// other coworker-related attributes
}
通过这种方式,如果你想让一个人成为一个同事,你将把Coworker属性分配给那个人。
老实说,这个问题与Hibernate或JPA无关。它根本不适用于普通的POJO,就像我之前建议的那样。在Java中,您根本无法使类的实例成为另一个类的实例。