当前位置: 首页 > 知识库问答 >
问题:

JPA父/子关系

陈阳舒
2023-03-14

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

}

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

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

谢谢你的时间!

共有1个答案

滕鸿畴
2023-03-14

看起来像是您的Something和SomethingCompletelyDifferent(SCD)实体中元数据字段上的注释。你从那里走到哪里取决于你。

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

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

>

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

    分别创建与各自父对象具有双向关系的图元1和图元2。

    创建两个实体,每个实体封装一个List

  •  类似资料:
    • 我有一个场景,需要在一种情况下加载所有子值,在另一种情况下加载一些特定的子值。我对这两种情况都使用一个bean,并使用命名查询编写查询。 现在在我的查询2中,我只需要加载字符串A,而不需要加载字符串B和字符串C。我试过使用 但得到以下错误 那么,关于如何继续这方面的任何建议。。

    • 伪代码: 为什么大多数程序通常不允许这样做(我从未见过)? 程序不能识别出它何时进行了循环并停止执行任务吗? 对于实例: 假设这些对象是3d网格,我们想在x轴上转换对象A 2个单位。通常,父子关系会移动A的任何子级。所以它穿过子树,并用A翻译x轴上的每个子级2个单位。然后它到达树中的对象A,而不是移动它,为什么不让它检查身份,如果身份返回true,然后停止移动东西? 这只是软件开发人员的懒惰吗?

    • 实现一对多关系并选择父项和子项我有一个关系,我想进行查询(选择*) 文件夹。JAVA 作者。JAVA 我的请求: 我得到了这样的结果: 我的代码有什么问题?什么是问题,当我执行查询我得到了这个结果...我想得到这个结果

    • 在@JoinColumn中的一对多关系中,我从子表中设置name,从父表中设置reference column。但是,当我在上面的person类中用@OneToOne定义相同的单向关系时,我必须从person表而不是从name表中设置@JoinColumn名称。 我的问题是为什么这两个连接条件中的定义名称不同,在一个条件中,我必须将该名称设置为来自同一表的PK列名的名称,而在第二个示例中,我必须设

    • 问题内容: 阅读了这篇JPA地图关系实体parentID后,我尝试将其应用于我的代码,但这对我不起作用。 这是我对象中的代码 现在这是我运行的测试 此测试行始终失败。 基于我的关系设置,Hibernate无法检索该子类别,我也不知道为什么。现在我真的很希望这对我来说不是什么愚蠢的事情,因为我会自己开枪(即使是很晚并且很累)。顺便说一下,不要介意代码中的公共变量,我正在使用play!(playfra

    • 在Hibernate文档中,有这样一句话: Hibernate中一对多关联的默认语义与父/子关系的常用语义相比,与复合元素映射的语义要差得多。 我发现这句话很混乱,有人能解释一下它的意思吗?此外,在Best Pratices页面上,您会发现 编写细粒度的类并使用