簡體   English   中英

Bug休眠OneToMany / ManyToOne

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM