我有三個實體,會話,訂單和用戶(我的在線電影票項目的一部分)。在我的域模型中,Order保留用戶和會話的fk。正如你可以在我的代碼中看到:Jpa幾個@ManyToOne與級聯
@Table(name="Orders")
@Entity
public class Order {
@ManyToOne
@JoinColumn(nullable = false)
private User user;
@ManyToOne
private Session session;
...
}
@Entity
@Table(name="Session")
public class Session {
@OneToMany(fetch=FetchType.LAZY,
cascade = CascadeType.ALL,
mappedBy = "session")
private List<Order> orders = new ArrayList<Order>();
...
}
@Table(name="User")
@Entity
public class User {
@OneToMany(cascade = { CascadeType.PERSIST,
CascadeType.MERGE,
CascadeType.REMOVE },
mappedBy = "user")
private @Getter Set<Order> orders = new HashSet<>();
...
}
我的問題是,我可以使用CascadeType.ALL
兩個會話和用戶? 使用會話和用戶更新訂單時是否存在潛在的衝突?
正如您所見,我使用fetchType.Lazy,它可以保證Session和User中的訂單都是最新的嗎?
謝謝,就是我在找什麼! – ivy
「從Session s join fetch s.orders中選擇不同的s」,但如果s.orders爲空,則此查詢將返回null。如果我的數據庫中已經有一個空訂單的會話,我如何向其中插入訂單? – ivy
@常春藤,請看更新。 –