【问题标题】:Join multiple tables for one entity with JPA?使用 JPA 为一个实体连接多个表?
【发布时间】:2015-03-11 09:15:40
【问题描述】:

我想知道是否可以创建一个从多个表中获取数据的实体。

我有一个基于 TableA 的实体。

特殊之处是我还需要TableD的数据,它链接到TableC,它链接到TableB,最后用TableA id链接到TableA

我完全知道我可以在 TableB、C、D 上创建一个实体。 但我不需要这些表上的任何数据,除了 TableD。 B 和 C 只是“一条可以遵循的道路”。

http://img11.hostingpics.net/pics/878537schema.png

我看到了可以在 EntityA 上使用的 @SecondaryTables 注释,但您似乎只能加入 EntityA 的 PK。

如果您知道可以防止我创建无用实体的解决方案,我将不胜感激。

【问题讨论】:

  • 创建一个数据库视图并将一个实体映射到那个?当您真正想从它们各自的表中获取数据时,我看不到如何将实体标记为无用。
  • @Gimby 我用架构更新了我的帖子以突出我的问题。我正在使用我没有创建的数据库,所以我必须使用它
  • @Gimby 建议的视图方法是我能看到的唯一方法,如果您不想映射 B、C、D。然后,您可以使用视图作为辅助表将 A 的字段映射到此视图,或者将视图作为与 A 一对一的实体。
  • 多谢两位,我会加油的

标签: java hibernate jpa spring-boot multiple-tables


【解决方案1】:

您可以通过继承策略 InheritanceType.JOINED 链接每个实体。然后就可以在子类中获取父类的所有值了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 2013-11-27
    相关资源
    最近更新 更多