【问题标题】:Map entity for embeddable class可嵌入类的映射实体
【发布时间】:2014-10-15 09:46:12
【问题描述】:

我写了一个 Team 实体和一个 Player 实体。

一支球队有两名球员。

如何在 Hibernate 中进行映射。

通过使“玩家”成为一个可嵌入实体类并将其嵌入到“团队”类中两次是我认为使用的一种方式。然后将如何映射关系。 OneToOne 还是其他方式?

【问题讨论】:

    标签: hibernate orm


    【解决方案1】:

    TeamPlayer 应被视为 2 个不同的实体,您不能在 Team 中嵌入 Player

    使用可嵌入组件时可以浏览hibernate文档:

    5.1.5. Embedded objects (aka components)

    可嵌入对象(或组件)是具有以下属性的对象 映射到与拥有实体的表相同的表。组件可以, 依次声明自己的属性、组件或集合

    从逻辑上讲,一个团队可以有很多玩家,所以你需要一对多的关系。

    请参阅7.2.2.1. Lists 部分下的文档以了解如何进行映射。

    【讨论】:

    【解决方案2】:

    您需要团队类中的玩家集合,并且必须以 hibernate 文档中描述的任何方式(包、集合、列表或其他任何方式)将其映射为一对多。

    不要创建具有两个 Player 属性的 Team 类!

    此外,当创建可选的一对一关系时(在数据库中没有外键关系,因此可以使用孤立引用),使用一对多集合(没有对象或只有一个对象)可能会很有用一对一,用于延迟加载。

    【讨论】:

    猜你喜欢
    • 2019-08-16
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 2011-07-13
    • 1970-01-01
    相关资源
    最近更新 更多