Jpa 防止并发修改。日食(乐观锁例外)
问题: 两个管理员->Admin1和Admin2同时修改来自不同终端的UserA 用户和用户组实体之间存在多对多关系 这里发生的情况是,当Admin1将Group1分配给UserA时,信息被保存。 当来自不同终端的Admin2将Group2分配给UserA时,保存的信息将覆盖Admin1所做的更改。意味着当我签入DB时,UserA被分配到Group2,而Admin2不知道Admin1所做的更改Jpa 防止并发修改。日食(乐观锁例外),jpa,eclipselink,ejb-3.0,optimistic-locking,Jpa,Eclipselink,Ejb 3.0,Optimistic Locking,问题: 两个管理员->Admin1和Admin2同时修改来自不同终端的UserA 用户和用户组实体之间存在多对多关系 这里发生的情况是,当Admin1将Group1分配给UserA时,信息被保存。 当来自不同终端的Admin2将Group2分配给UserA时,保存的信息将覆盖Admin1所做的更改。意味着当我签入DB时,UserA被分配到Group2,而Admin2不知道Admin1所做的更改 这是乐观的情况吗 如果这是乐观的情况,那么为什么不抛出乐观锁例外 如何将Admin1所做的更改通知Ad
@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;
@manytomy
@JoinTable(name=“user\u group”,joinColumns={@JoinColumn(name=“user\u group\u id”,referencedColumnName=“id”)},inverseJoinColumns={@JoinColumn(name=“user\u id”,referencedColumnName=“id”)})
私有列表用户列表;
@许多
@JoinTable(name=“user\u group”,joinColumns={@JoinColumn(name=“user\u id”,referencedColumnName=“id”)},inverseJoinColumns={@JoinColumn(name=“user\u group\u id”,referencedColumnName=“id”)})
私有列表用户组列表;
@版本注释标记在版本列上,该列在每次操作时更新
如果您需要我方提供更多信息,请告知。将group1分配给user1时,请保存上次修改的时间戳。下次请求获取user1详细信息时,请确保提供上次修改日期以及其他详细信息。当admin1修改请求时,请他提供与get操作期间相同的上次修改日期。在保存请求之前,将上次修改的日期与您提供给admin1的日期进行比较。基本上,这里最后修改的日期是一种标记。您存储一个令牌,将其提供给访问数据的用户,然后当用户修改数据并将其发送给持久化操作时,确保数据库中的令牌与用户返回给您的令牌匹配,否则表示记录已被修改,令牌在数据库中已更改,不允许用户持久化坏数据 希望这有帮助