【发布时间】:2015-03-03 22:05:35
【问题描述】:
您好,我正在处理一个项目,当 2 个用户在同一个屏幕上处理相同的订单时,我必须处理一个案例。如果用户 1 先提交或更新订单,那么我不希望用户 2 提交相同的订单,而是警告他这些订单已经提交,然后刷新页面。你们认为这是否是正确的方法,以及我如何在 Java 和休眠中实现它?
【问题讨论】:
标签: java database hibernate concurrentmodification
您好,我正在处理一个项目,当 2 个用户在同一个屏幕上处理相同的订单时,我必须处理一个案例。如果用户 1 先提交或更新订单,那么我不希望用户 2 提交相同的订单,而是警告他这些订单已经提交,然后刷新页面。你们认为这是否是正确的方法,以及我如何在 Java 和休眠中实现它?
【问题讨论】:
标签: java database hibernate concurrentmodification
Hibernate 中有Version 的概念。或者所谓的optimisting locking。
每个实体都有一个版本字段。即,每个表中的一列用于存储此版本。将实体保存到数据库时,休眠将处理 vrsioning。如果有任何东西关闭,它将引发异常。
@Entity
public class Flight implements Serializable {
...
@Version
@Column(name="OPTLOCK")
public Integer getVersion() { ... }
}
参考号:http://docs.jboss.org/hibernate/orm/4.0/devguide/en-US/html/ch05.html#d0e2225
【讨论】: