java - JPA 实体扩展类包含@Id

标签 java jpa

我有实体类都包含 id 作为主键,我可以创建包含所有公共(public)字段的抽象类并允许所有类扩展此类,如下所示:

public abstract class CommonFields{
    @Id
@Column(name = "ID")
private long id;

public void setId(long id) {
    this.id = id;
}

public long getId() {
    return id;
}
}

@Entity
    @Table
    public class B extends CommonFields{
    String carModel;
}




@Entity
    @Table
    public class A extends CommonFields{
    String name;
}

谢谢大家

最佳答案

您可以使用@MappedSupperclass 对类的公共(public)字段进行注释

@MappedSuperclass
public abstract class CommonFields{
    @Id
    @Column(name = "ID")
    private long id;

    public void setId(long id) {
        this.id = id;
    }

    public long getId() {
        return id;
    }
}

来自@MappedSuperclass 文档:

Designates a class whose mapping information is applied to the entities that inherit from it. A mapped superclass has no separate table defined for it.

关于java - JPA 实体扩展类包含@Id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24177732/

相关文章:

java - 从 DNS 响应获取 IP

java - Spring Boot 数据库保留在其他计算机上

带有 JPA + Hibernate(或类似)和 Apache Derby 嵌入式数据库的 Java 独立应用程序

java - JPA:使用附加属性映射多对多关系

java - 将数据库时间戳列映射到 UTC 日历 (JPA) 并通过 WebService (jax-ws) 将其作为 UTC 日期传递

java - 检查列内的特定字符串 ,, android studio

java - JFrame 中的图像缩略图 View /编辑器

java - Collections.sort() 影响所有 ArrayList。如何只对一个列表进行排序而不对其他列表进行排序?

hibernate - 总部内的HQL订单

java - 我怎样才能杀死android中的其他前台 Activity ?