1
我想使用OneToMany和ManyToOne做一個關係,但是當我嘗試插入一個記錄到數據庫中而沒有在列表OneToMany中添加一個對象(類)時,hibernate嘗試插入記錄無論如何OneToMany。例如: Employee類:錯誤休眠OneToMany/ManyToOne
@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 (?)
你有什麼建議?由於Hibernate在EMPLOYEE_ID列中返回空值,並且列表的大小爲0,因爲我沒有添加Shift對象,並且當我添加一個Shift對象時,Hibernate嘗試在表中插入兩條記錄Shift而不是一個。 –
它不應在Shift表中爲EMPLOYEE_ID列創建空值。關於你的第二點,請發佈你的代碼herr(更新你的問題) – RE350