我遇到了一個與此非常相似的問題:How do I join tables on non-primary key columns in secondary tables? 但我不確定是否可以應用相同的解決方案。如何使用外鍵將兩個表映射到一個實體?
我有兩個表像這樣:
CREATE TABLE CUSTOMER
(
CUSTOMER_ID INTEGER NOT NULL,
DETAIL_ID INTEGER NOT NULL,
PRIMARY KEY(CUSTOMER_ID),
CONSTRAINT cust_fk FOREIGN KEY(DETAIL_ID) REFERENCES DETAILS(DETAIL_ID)
)
CREATE TABLE DETAILS
(
DETAIL_ID INTEGER NOT NULL,
OTHER INTEGER NOT NULL,
PRIMARY KEY(DETAIL_ID)
)
我想這些表映射到稱爲Customer
一個類,所以我有:
@Entity
@Table(name = "CUSTOMERS")
@SecondaryTable(name = "DETAILS", [email protected](name="DETAIL_ID"))
public class Customer {
@Id
@GeneratedValue
@Column(name = "CUSTOMER_ID")
private Integer id;
@Column(table = "DETAILS", name = "OTHER")
private Integer notes;
// ...
}
,但是這隻有當DETAIL_ID
匹配主表中的CUSTOMER_ID
。
所以我的問題是:我如何在我的主表中使用外鍵字段加入輔助表的主鍵?
UPDATE 我試圖設置:
@SecondaryTable(name = "DETAILS", [email protected](name="DETAIL_ID", referencedColumnName="DETAIL_ID"))
但是當我運行的應用程序,我得到這個異常:
org.hibernate.MappingException: Unable to find column with logical name: DETAIL_ID in org.hibernate.mapping.Table(CUSTOMERS) and its related supertables and secondary tables
好的,所以你有兩張桌子,你想把它們加入一張桌子嗎? –
@SerenityStackHolder是的,我想要在單個實體上映射兩個表。但是我在輔助表的主表中有一個外鍵。 – davioooh