为持久性注释继承的属性

IaC*_*der 5 java spring annotations hibernate jpa

假设我有一个A类如下:

class A{
   int id;
   int getId(){};
   void setId(int id){};
}
Run Code Online (Sandbox Code Playgroud)

B级如下:

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

   @Column(length=20)
   string getName(){}
   void setName(){}
}
Run Code Online (Sandbox Code Playgroud)

如何从A中注释继承的id字段,以便Hibernate/JPA知道它是实体的Id?我试过简单地将@Id放在A中的字段上,但这不起作用.我也试过制作一个实体,这也没有用.

Dav*_* L. 10

假设您不希望超类本身表示实体,您可以@MappedSuperclass在超类上使用子类继承持久性的属性:

@MappedSuperclass
class A{
   int id;
   @Id
   int getId(){};
   void setId(int id){};
}
Run Code Online (Sandbox Code Playgroud)

考虑使超类抽象.有关详细信息,请参阅文档的此部分.