У меня есть три сущности, сессия, заказ и пользователь (часть моего проекта онлайн-билетов). В моей модели домена Order сохраняет fk как пользователя, так и сеанса. Как вы можете увидеть в моем коде:Jpa несколько @ManyToOne с Cascade
@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, может это гарантировать, что заказы в обеих сессии и пользователь уточненный?
Спасибо, только что я ищу! – ivy
"выберите выделение s из сеанса s join fetch s.orders", но этот запрос вернет null, если s.orders пуст. Если у меня есть сеанс с пустыми заказами уже в базе данных, как я могу вставить в него заказ? – ivy
@Ivy, смотрите обновления. –