使用JPA(Hibernate)我正在尝试实现以下关系,并想知道其他人是否对最佳方法有任何建议:
@Entity(name="SOMETHING")
public class Something {
List<MetaDatum> metaData;
}
@Entity(name="SOMETHING_COMPLETELY_DIFFERENT")
public class SomethingCompletelyDifferent {
List<MetaDatum> metaData;
}
@Entity(name="META")
public class MetaDatum {
}
基本上它是n
完全不相关的对象,每个对象都有一个公共子对象的集合;在对象模型中实现起来很简单,在数据库中稍微麻烦一点!
我确信这一定是常见的,但我找不到任何示例实现,因为我真的不知道正确的搜索条件。
谢谢你的时间!
答案 0 :(得分:2)
在@OneToMany
和metaData
(Something
)实体的SomethingCompletelyDifferent
字段中,SCD
注释就是一个案例。你去哪里取决于。
由于Something
和SCD
没有共同的祖先,因此您不能简单地将关系设为双向并使用连接列。
有几种解决方案,因此您必须根据实际使用情况来决定。
如果您不需要从MetaDatum
遍历到它的父实体,只需坚持单向关系即可。该关系将通过hibernate与连接表进行映射。
制作可与其各自父对象具有双向关系的单独MetaDatum1
和MetaDatum2
实体。
为两个父实体创建一个共同的祖先,包含与MetaDatum
的双向关系
创建两个实体,每个实体都封装一个List<MetaDatum>
,专为与您的Something
和SCD
实体建立双向关系而定制