我有兩個域類。以下是課程的粗略草圖。無法獲取CascadeTypes的用法
Company.java
public class Company{
@OneToMany(orphanRemoval="true",cascade=CascadeType.ALL,
mappedBy="company")
private List<Department> departments;
}
Department.java
public class Department{
@ManyToOne(fetch=FetchType.LAZY,cascade=CascadeType.PERSIST)
@JoinColumn(name="company_id")
private Company company
}
JPA @ManyToOne with CascadeType.ALL說CascadeType.ALL的含義是,將持續傳播(級聯)所有的EntityManager操作(PERSIST, REMOVE, REFRESH, MERGE, DETACH)
到相關實體。
Test.java的主要方法
//session started and transaction begin
Company company=new Company();
company.setName("Company");
Department department=new Department();
department.setName("Testing department");
department.setCompany(company);
session.save(department);
//transaction committed and session closed
它給我的異常
Exception in thread "main" org.hibernate.PropertyValueException: not-null property references a null or transient value: someValue
但是,當我在@ManyToOne批註使用CascadeType.ALL
,它工作正常,但不能與CascadeType.PERSIST
那麼什麼我是否應該使用這個示例,而不使用CascadeType.ALL
,因爲所有用戶都使用(PERSIST, REMOVE, REFRESH, MERGE, DETACH)
。那麼下面我應該用哪些來完成我的工作而不是所有工作?
所以我的問題是如何CASCADE.ALL作品,未經堅持用方法? – 2014-10-01 12:42:28
請儘量給予適當的解釋,以便我可以將此答案標記爲已接受。 – 2014-10-01 12:47:00
看到我的答案,現在更新了。 – Chaitanya 2014-10-01 12:48:48