Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA父母/子女关系_Java_Hibernate_Jpa_Parent Child - Fatal编程技术网

Java JPA父母/子女关系

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

使用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 {

}
@Entity(name=“SOMETHING”)
公开课{
列出元数据;
}
@实体(name=“完全不同的东西”)
公共类完全不同{
列出元数据;
}
@实体(name=“META”)
公共类元数据{
}
基本上是
n
完全不相关的对象,每个对象都有一个公共子对象的集合;在对象模型中实现简单,在数据库中稍微麻烦些

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


谢谢你的时间

看起来像是
Something
Something完全不同的
SCD
)实体中
metaData
字段上的
@OneToMany
注释的例子。你从那里走到哪里取决于

由于
Something
SCD
没有共同的祖先,因此不能简单地使关系双向并使用联接列

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

  • 如果不需要从
    MetaDatum
    遍历到它的父实体,只需使用单向关系即可。hibernate将使用联接表映射该关系

  • 分别创建与各自父对象具有双向关系的
    MetaDatum1
    MetaDatum2
    实体

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

  • 创建两个实体,每个实体封装一个
    列表
    ,为您的
    某物
    SCD
    实体的双向关系定制


回答得很好,谢谢您提供的信息!我认为您的第一个解决方案最适合我正在开发的内容,因为我不需要双向关系,而且可以想象有十多个对象需要这种关系。我会选择第五个选项,即具有多个所有者字段,每个字段都关联一个JoinTable。