问题:
两个 Admins -> Admin1 和 Admin2 从不同的终端同时修改 UserA。
User 和 UserGroup 实体之间存在多对多关系。
这里发生的是当 Admin1 将 Group1 分配给 UserA 时,信息被保存。当来自不同终端的 Admin2 将 Group2 分配给 UserA 时,保存的信息会覆盖 Admin1 所做的更改。意味着当我签入数据库时,UserA 被分配给 Group2,而 Admin2 不知道 Admin1 所做的更改。
- 这是乐观的情况吗?
- 如果这是乐观的情况,那么为什么不抛出 OptimisticLockException?
- 我将如何通知 Admin2 Admin1 所做的更改。
使用 Eclipselink 如下:
@ManyToMany
@JoinTable(name = "user_group", joinColumns = { @JoinColumn(name = "user_group_id", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "user_id", referencedColumnName = "id") })
private List<User> userList;
@ManyToMany
@JoinTable(name = "user_group",joinColumns = { @JoinColumn(name = "user_id", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "user_group_id", referencedColumnName = "id") })
private List<UserGroup> userGroupList;
@Version 注释标记在每个操作上更新的版本列上。
如果您需要我这边的更多信息,请告诉我。