2

使用 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完全不相关的对象,每个对象都有一组公共子对象;在对象模型中实现简单,在数据库中稍显麻烦!

我确信这一定是一种常见的情况,但我很难找到任何示例实现,因为我真的不知道正确的搜索词。

谢谢你的时间!

4

1 回答 1

2

看起来像是在您的和( ) 实体中的字段上进行@OneToMany注释的情况。你从那里去哪里取决于。metaDataSomethingSomethingCompletelyDifferentSCD

由于Something并且SCD没有共同的祖先,您不能简单地使关系双向并使用连接列。

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

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

  • 使可以与其各自的父对象具有双向关系的单独MetaDatum1和实体。MetaDatum2

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

  • 创建两个实体,每个都封装一个,为您和实体List<MetaDatum>的双向关系量身定制SomethingSCD

于 2013-10-19T18:58:40.167 回答