簡體   English   中英

spring jpa-繼承實體沒有獲得自己的id列

[英]spring jpa - inheriting entity does not get its own id column

我有一個繼承自Item的實體HygieneItem

@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文檔中,我剛剛閱讀了

[...] InheritanceType.TABLE_PER_CLASS,每個具體類都映射到數據庫中的單獨表。 類中的所有字段或屬性(包括繼承的字段或屬性)都映射到數據庫中類表中的列。

我怎樣才能告訴JPA,它應該給hygieneitems表自己的ID列以及HygieneItemItem (除item_id列之外)中定義的列?

該項目可以在github上找到

謝謝您的幫助

您不能覆蓋繼承層次結構中的ID。

因此,主鍵@Id總是在父類中定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM