我有兩個表,第一個表包含company_id,company_name和國家名稱,第二個表包含與一對一映射的公司相關的細節。休眠一對一映射不用父類獲取子類數據
這是我的表結構: -
company {
company_id int,
company_name varchar,
country varchar
}
company_detail {
id int,
company_id int,
company_description text,
future_goal text
}
繼POJO用來映射: -
在公司POJO: -
@OneToOne(cascade=CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name="COMPANY_ID")
private CompanyDetails companyDetails;
在CompanyDetail POJO: -
@OneToOne(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
@JoinColumn(name="COMPANY_ID")
public Company company;
但是當我得到公司對象時,它在companyDetails中包含null。用於獲取Company對象
下面的代碼: -
Company company = (Company) session.get(Company.class, companyId);
我想與公司數據得到companyDetails數據一起。
我做錯了什麼? 解決此問題需要更改哪些代碼。
你的領域是一個私有類CompanyCaptiveDetails'的'但是你的POJO被命名爲'CompanyDetail' 。請解釋 – henrik
對不起,我糾正了我的問題。現在請看 –
閱讀有關雙向關聯的hibernate文檔。一方(沒有外鍵的一方)必須是另一方的反面,使用mappedBy。在您的映射中,您可以定義兩個單獨的一對一關聯。並且您告訴company.company_id是company_detail.id的連接列(即外鍵),這不正確。我真的不明白這兩張表的重點。你可以把所有東西放在公司的表格中。 –