[英]Bug Hibernate OneToMany/ManyToOne
我正在嘗試使用OneToMany和ManyToOne建立關系,但是當我嘗試將記錄插入數據庫而不在列表OneToMany中添加對象(類)時,休眠模式無論如何都會嘗試插入記錄OneToMany。 示例:員工類別:
@Entity
public class Employee implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true, mappedBy="employee")
private List<Shift> shifts = new ArrayList<Shift>();
}
班次:
@Entity
public class Shift implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.DETACH)
@JoinColumn(name="EMPLOYEE_ID")
private Employee employee;
}
當我嘗試插入記錄時:
Employee employee = new Employee();
entityManager.persist(employee);
entityManager.flush();
我該如何解決? 我正在使用SQL Server數據庫。
14:53:49,660 INFO [stdout] (default task-20) Hibernate: insert into Employee
14:53:49,762 INFO [stdout] (default task-20) Hibernate: insert into Shift(EMPLOYEE_ID) values (?)
據我了解,這是因為您在Employee
類中指定了cascade = CascadeType.ALL
。
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true, mappedBy="employee")
private List<Shift> shifts = new ArrayList<Shift>();
這意味着,當您對Employee
對象進行任何操作時,由於此原因,它也將其級聯到Shift
類。
有關參考,請參見此處: -CascadeType
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.