【问题标题】:Java - JPA: How can I create a table for each subclass but not for superclass?Java - JPA:如何为每个子类而不是为超类创建一个表?
【发布时间】:2012-03-24 15:53:47
【问题描述】:

我的类结构如下:

abstract class A {
    String a;
}

class B extends A {
    String b;
}

class C extends A {
    String c;
}

现在我希望 JPA 为每个子类创建一个表。

我看过一些以前的问题,但我很困惑。如何映射这些类?

【问题讨论】:

标签: java inheritance jpa abstract-class subclass


【解决方案1】:

如果 A 由于映射而被继承,并且您不需要单独的实体,则可以将其定义为 MappedSuperClass。映射超类只用于继承映射,不能查询。

另一方面,如果需要真正的继承——取决于实现——你可以选择table per (concrete) class继承策略。对此策略的支持是可选的,因此不能保证适用于所有实现。至少支持新版本的

在您的情况下,需要的步骤是在 A 类中添加以下内容:@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)

【讨论】:

  • 我刚刚阅读了有关 MappedSuperClass 的信息。谢谢你的回答。
【解决方案2】:

为什么不使用@MappedSuperClass 注释类A 使用表子类或表作为具体类继承策略

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    相关资源
    最近更新 更多