Java 没有id的jpa映射超类

Java 没有id的jpa映射超类,java,jpa,inheritance,Java,Jpa,Inheritance,我对以下问题感到好奇。我有两个实体,A和B。它存储几乎相同的信息(例如,一个名称——在现实生活中更复杂),但连接和外键不同 我是否可以在没有Id的情况下创建映射的超类,class a和class B,扩展映射的超类,只包含Id属性 例如: import lombok.Getter; import lombok.Setter; import lombok.Data; import javax.persistence.Entity; import javax.persistence.JoinCol

我对以下问题感到好奇。我有两个实体,
A
B
。它存储几乎相同的信息(例如,一个名称——在现实生活中更复杂),但连接和外键不同

我是否可以在没有Id的情况下创建映射的超类,
class a
class B
,扩展映射的超类,只包含Id属性

例如:

import lombok.Getter;
import lombok.Setter;
import lombok.Data;

import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.MappedSuperclass;
import javax.persistence.OneToMany;

@MappedSuperclass
@Getter
@Setter
@Data
class superClass {

    @Column(name = "name")
    private String name;

}

@Entity
@Table(name = "A")
@Data
class A extends superClass {

    @Id
    @OneToMany
    @JoinColumn(name = "id", referencedColumnName = "referencedName")
    private SomeClass id;

}

@Entity
@Table(name = "B")
@Data
class B extends superClass {

    @Id
    @OneToOne
    @JoinColumn(name = "id", referencedColumnName = "referencedName")
    private SomeOtherClass id;

}
JPA是否认为它有效?我确实读了
mappedSuperClass
的JavaDocs,但对它只字未提。我会说,这是有效的-但是IntelliJ的想法说,超类必须有一个Id属性。我在网上找不到这方面的任何信息


编辑:对不起,我错过了。我在超类上留下了
实体
注释,这就是想法签署错误的原因。我删除了它,错误就消失了。但是我不确定这是否有效。

是的,不要求MappedSuperclass中包含任何内容。它只是为子类提供额外的注释。

是的,它是有效的。无论如何,您的超类将不会在数据库中显示为表