3
我们有一个在Load Balancer下运行的Web应用程序。两个用户正在尝试执行相同的操作,例如,两个用户在同一时间创建相同的订单,创建重复的订单。在Spring中处理脏读,使用JPA处理Hibernate
在一个事务提交之前,另一个请求正在检查是否有任何order.It创建重复条目。两个请求都试图同时处理。
- 用户A & B同时提交订单。
- 用户A的交易验证,是否有相同订单的任何现有条目。如果相同订单没有其他条目,则会创建条目。
- 用户B的交易也验证并创建相同。
- 如果A的交易完成,那么B的交易不会发生。但事务提交之前,这两种请求是有效的,所以它的同一笔订单创建两个条目(重复)
我们已经尝试了下面的选项,
- 锁与锁类型的EntityManager作为同步
- 隔离级别为Serializable
但没有作为OPTIMISTIC_FORCE_INCREMENT
请提出如何继续。
由于
您是否尝试在数据库中添加任何约束? –
当你说重复时,你是说订单号码是一样的吗?或者两个用户都试图为同一客户输入完全相同的订单? –
@ AmmSokun-我们不能做数据库约束。该订单可能已取消。 – Pandiyan