Java JPA父母/子女关系
使用JPA(Hibernate),我试图实现以下关系,并想知道其他人是否对最佳方法有任何建议:Java JPA父母/子女关系,java,hibernate,jpa,parent-child,Java,Hibernate,Jpa,Parent Child,使用JPA(Hibernate),我试图实现以下关系,并想知道其他人是否对最佳方法有任何建议: @Entity(name="SOMETHING") public class Something { List<MetaDatum> metaData; } @Entity(name="SOMETHING_COMPLETELY_DIFFERENT") public class SomethingCompletelyDifferent { List<MetaDatum
@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 {
}
@Entity(name=“SOMETHING”)
公开课{
列出元数据;
}
@实体(name=“完全不同的东西”)
公共类完全不同{
列出元数据;
}
@实体(name=“META”)
公共类元数据{
}
基本上是n
完全不相关的对象,每个对象都有一个公共子对象的集合;在对象模型中实现简单,在数据库中稍微麻烦些
我确信这一定是常见的情况,但我很难找到任何示例实现,因为我不知道正确的搜索词
谢谢你的时间 看起来像是
Something
和Something完全不同的(SCD
)实体中metaData
字段上的@OneToMany
注释的例子。你从那里走到哪里取决于
由于Something
和SCD
没有共同的祖先,因此不能简单地使关系双向并使用联接列
有几种解决方案,因此您必须根据实际用例来决定
- 如果不需要从
MetaDatum
遍历到它的父实体,只需使用单向关系即可。hibernate将使用联接表映射该关系
- 分别创建与各自父对象具有双向关系的
MetaDatum1
和MetaDatum2
实体
- 为两个父实体创建一个共同的祖先,包含与
MetaDatum
- 创建两个实体,每个实体封装一个
列表
,为您的某物
和SCD
实体的双向关系定制
回答得很好,谢谢您提供的信息!我认为您的第一个解决方案最适合我正在开发的内容,因为我不需要双向关系,而且可以想象有十多个对象需要这种关系。我会选择第五个选项,即具有多个所有者字段,每个字段都关联一个JoinTable。