我在基於Spring框架的休息Web服務中使用hibernate 4.3作爲持久層。當我保存父對象並更新關聯的子對象時,我一直面臨一個問題。 Hibernate實體和表結構如下所示。 這是我的父類。如何在Hibernate中保存(持久保存)父對象時更新(合併)子對象?
public class Company {
@Column("name"= "id")
private int id;
@Column("name"= "name")
private String name;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
@JoinColumn(name = "company_id")
private List<Employee> Employees = new ArrayList<>();
}
這是我的子類:
public class Employee {
@Column("name"= "id")
private int id;
@Column("name"= "name")
private String name;
@ManyToOne(fetch = FetchType.LAZY)
private Company company;
}
各表:
Table Company:
id
name
Table Employee
id
name
company_id
這是我一直在嘗試使用Web服務我的數據庫來保存JSON。
JSON:
{"id":null,
"name":"company_name",
"Employee":[
{"id":1,
"name":"name1"},
{"id":2,
"name":"name2"}
]
}
,當我在POST請求上述JSON發送,它應該創建新的父對象和更新子對象,它也應該設置父對象ID在子表(COMPANY_ID =「父對象ID 「)。但不幸的是它不適合我。 當使用CascadeType.ALL或CascadeType.PERSIST在字段
在我的公司實體私人列表僱員=新的ArrayList <>();
,它給「被persist超脫實體」
當我使用CascadeType.MERGE,它只設置父ID在子對象
的錯誤但它不會更新子對象的任何其他字段,即「名稱」列。如果任何人都可以幫助我,那麼您的答案是最受歡迎的。 非常感謝您提前。
感謝修正,但它不工作對我來說也是如此。我還有同樣的錯誤。 – Govardhan