Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA注释将包括来自非实体超类(来自JAR!)的字段_Jpa_Inheritance_Spring Boot - Fatal编程技术网

JPA注释将包括来自非实体超类(来自JAR!)的字段

JPA注释将包括来自非实体超类(来自JAR!)的字段,jpa,inheritance,spring-boot,Jpa,Inheritance,Spring Boot,我正在使用spring boot、spring JPA,但有以下问题:我创建了一些类“B”,它从JAR扩展了一些类“A”,在类“B”上添加了@Entity和@Table注释(在类“A”上我不能做同样的事情),但当spring/Hibernate创建表时,只包含来自类“B”的字段 // some class from JAR // not an Entity class A { String fieldA; } @Entity @Table(name = "B") class B e

我正在使用spring boot、spring JPA,但有以下问题:我创建了一些类“B”,它从JAR扩展了一些类“A”,在类“B”上添加了
@Entity
@Table
注释(在类“A”上我不能做同样的事情),但当spring/Hibernate创建表时,只包含来自类“B”的字段

// some class from JAR
// not an Entity
class A { 
    String fieldA; 
}

@Entity
@Table(name = "B")
class B extends A {
    String fieldB;
}
在数据库中创建的表

+--------+                                +--------+--------+
| fieldB |    but I want this to be made  | fieldA | fieldB |
+--------+                                +--------+--------+
如何管理?是否有一些JPA注释可以放在B类上解决这个问题


编辑:如果
@AttributeOverride
注释是解决方案,当
@Id
注释不能放在类外时,如何将覆盖的字段标记为
Id

您可以在getter上设置
@Id

@Entity
@Table(name = "B")
class B extends A {
    String fieldB;

    @Id
    @Override
    public String getFieldA() {
        return super.getFieldA();
    }
}

是的,我试过了,但在这种情况下的问题是,我也需要实现setter,我想跳过的。超类是没有setter的,因为它使用builder来稳定它。没错。builder-pattern和JPA不是最好的朋友。另外两个“解决方案”是映射值,并使用反射从B构建setter(我知道…)。