java - 为持久性注释继承的属性

标签 java hibernate jpa annotations spring

假设我有一个 A 类,如下所示:

class A{
   int id;
   int getId(){};
   void setId(int id){};
}

B类如下:

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

   @Column(length=20)
   string getName(){}
   void setName(){}
}

如何注释从 A 继承的 id 字段,以便 Hibernate/JPA 知道它是 Id 对于实体?我尝试简单地将 @Id 放在 A 中的字段上,但这没有用。我 也尝试使 A 成为一个实体,但这也没有用。

最佳答案

假设您不希望父类(super class)本身代表一个实体,您可以在父类(super class)上使用@MappedSuperclass 让子类继承属性以实现持久化:

@MappedSuperclass
class A{
   int id;
   @Id
   int getId(){};
   void setId(int id){};
}

考虑使父类(super class)抽象。参见 this section文档的更多详细信息。

关于java - 为持久性注释继承的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/418197/

相关文章:

java - 如何在 Hibernate 中使用列表关联获取对象

java - 使用 JPA/Hibernate 在集合中搜索

java - 打印 vector <MyClass>

java - Java 中 lambda 表达式的内部接口(interface)方法调用

java - 在同一事务中同步更改的实体

Hibernate 不创建表

postgresql - JPA eclipselink OID 大对象 PostgreSQL

java - 排除Java项目中的特定警告

java - 如何使用 kill -3 <pid> 命令每 30 秒进行一次 java 堆转储

java - hibernate的 "property-ref"元素标签中的 "one-to-one"属性有什么作用?