spring jpa - 继承实体没有得到自己的id列

时间:2018-02-23 11:12:28

标签: java jpa spring-data-jpa

我有一个继承自HygieneItem的实体Item

@Entity
@Table(name="hygieneitems")
public class HygieneItem extends Item
{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "hygieneitem_id")
    private long id;

    @Column(name="retailer")
    private String retailer;
    // getters & setters
}

@Entity
@Table(name="items")
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class Item
{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "item_id")
    private long id;

    @Column(name="item_name")
    private String itemName;
    //getters & setters
}

hygieneitems表使用item_id代替自己的hygieneitem_id

Hibernate: create table hygieneitems (item_id bigint not null, item_name varchar(255), cart_id bigint not null, retailer varchar(255), primary key (item_id))
Hibernate: create table items (item_id bigint not null, item_name varchar(255), cart_id bigint not null, primary key (item_id))

在我刚刚阅读的jpa documentation

  

[...] InheritanceType.TABLE_PER_CLASS,每个具体类都映射到数据库中的单独表。类中的所有字段或属性(包括继承的字段或属性)都映射到数据库中类的表中的列。

我如何告诉JPA它应该为hygieneitems表提供自己的ID列以及HygieneItemItem中定义的列(item_id除外)柱)?

该项目可在github

上找到

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您无法覆盖继承层次结构中的ID。

因此主键@Id始终在父类中定义。