如何在Spring Boot 休眠中取消乐观锁定

50few1ms  于 2022-12-04  发布在  Spring
关注(0)|答案(1)|浏览(144)

该项目有@Entity1,它与@Entity2有OneToMany关系。@Entity1与@Entity3也有ManyToOne关系。我有一个@Controller,它为@Entity2向数据库添加数据,同时还更新关联的@Entity3的日期字段,但没有必要在那里指定绝对准确的日期。在我的情况下,两个@Entity1对象引用了相同的相关@Entity3。当执行来自两个客户端的并行请求时,服务器向其中一个返回OptimisticLockException,并回滚整个事务,这必须保存@Entity2。请告诉我如何仅为@Entity3取消Spring Boot 休眠中的OptimisticLockException异常?
我尝试使用@Transactional(propagation = Propagation.NOT_SUPPORTED)将关联的实体字段@Entity3与外部事务分开保存,但结果是,项目中的许多测试因此停止工作)

fykwrbwg

fykwrbwg1#

因此,我使用直接sql查询来更新javax.persistencefield.EntityManager,而不是hibEntity方法。由于这个原因,OptimisticLock不再被丢弃,字段被更新。

相关问题