我有两个域类。下面是课程的粗略草图。
公司.java
public class Company{
@OneToMany(orphanRemoval="true",cascade=CascadeType.ALL,
mappedBy="company")
private List<Department> departments;
}
部门.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的main方法
//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
但是当我CascadeType.ALL
在 @ManyToOne 注释上使用时,它可以正常工作,但不能使用CascadeType.PERSIST
所以我应该使用什么来使这个示例工作而不使用CascadeType.ALL
as ALL uses (PERSIST, REMOVE, REFRESH, MERGE, DETACH)
。那么我应该使用以下哪一项来完成我的工作而不是 ALL 以及它们是如何工作的?