【发布时间】:2016-09-08 15:02:39
【问题描述】:
我有三个实体,会话、订单和用户(我的在线电影票项目的一部分)。在我的域模型中,Order 保留了 User 和 Session 的 fk。正如您在我的代码中看到的:
@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 吗?
使用 Session 和 User 更新 Order 时是否存在潜在冲突?
如您所见,我使用了 fetchType.Lazy,能保证 Session 和 User 中的订单都是最新的吗?
【问题讨论】:
标签: java spring hibernate jpa cascade