JPA父母/子女关系

时间:2013-10-19 18:14:14

标签: 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> metaData;
}

@Entity(name="META")
public class MetaDatum {

}

基本上它是n完全不相关的对象,每个对象都有一个公共子对象的集合;在对象模型中实现起来很简单,在数据库中稍微麻烦一点!

我确信这一定是常见的,但我找不到任何示例实现,因为我真的不知道正确的搜索条件。

谢谢你的时间!

1 个答案:

答案 0 :(得分:2)

@OneToManymetaDataSomething)实体的SomethingCompletelyDifferent字段中,SCD注释就是一个案例。你去哪里取决于。

由于SomethingSCD没有共同的祖先,因此您不能简单地将关系设为双向并使用连接列。

有几种解决方案,因此您必须根据实际使用情况来决定。

  • 如果您不需要从MetaDatum遍历到它的父实体,只需坚持单向关系即可。该关系将通过hibernate与连接表进行映射。

  • 制作可与其各自父对象具有双向关系的单独MetaDatum1MetaDatum2实体。

  • 为两个父实体创建一个共同的祖先,包含与MetaDatum的双向关系

  • 创建两个实体,每个实体都封装一个List<MetaDatum>,专为与您的SomethingSCD实体建立双向关系而定制