【问题标题】:One Entity Have A Reference To Two Similar Entities一个实体引用了两个相似的实体
【发布时间】:2018-01-02 03:19:22
【问题描述】:

一对域实体类,B1 和 B2,其中一个主要镜像另一个并共享其对应的 id。由于系统要求,需要将它们映射到两个数据库表。 B1 和 B2 都与另一个实体 C 具有一对多的双向关系。在关系的“多”方面,实体 C 知道与 B1 和 B2 的关系。由于 B1 和 B2 之间的相似性,包括实体 ID,我想知道是否可以创建一个抽象实体类并让实体 C 只引用一个实体。在研究了JPA映射继承之后,我觉得没有合适的解决方案。嵌入式类也可能不合适。如果我真的想在 C 中使用一个实体引用路由,我可能需要添加一个实体 ID 属性,该属性将 B1 或 B2 引用到实体 C,但不定义 B1 或 B2 与 C 之间的任何关系。有更好的方法吗?

【问题讨论】:

    标签: hibernate jpa


    【解决方案1】:

    如果您愿意在 B1 和 B2 之间放置 @OneToOne 映射,您可以轻松地给 C 并链接到 B1 或 B2。鉴于 B1 和 B2 共享相同的标识符,@OneToOne 似乎最合适。

    【讨论】:

    • 感谢您的意见。 B1和B2之间存在镜像关系的主要原因是它们应该在两个不同的应用程序/服务中。我们目前正在构建一个单体应用程序,而理想的方法是微服务系统。由于考虑,我没有考虑B1和B2之间的一对一关系。
    • 是否可以将所有镜像属性提取到它们自己的 @Entity 中,然后在 B1 和 B2 上创建 @ManyToOne 引用?只是抛出想法。
    • 感谢您的想法。这种方法可以很好地适用于其他场景,但不适用于这个场景。它们是核心领域对象,我们尝试将它们设计成尽可能少的碎片。
    • 是否可以使用 Joined Inheritance 策略,然后为共享 id 使用辅助字段?
    猜你喜欢
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-03
    相关资源
    最近更新 更多