gpt4 book ai didi

java - Spring 有时会抛出 ObjectOptimisticLockingFailureException,有时会抛出 OptimisticLockException

转载 作者:行者123 更新时间:2023-11-30 10:27:52 34 4
gpt4 key购买 nike

在 Web 应用程序中,我使用 Spring 4.3.9 和 Hibernate 5.2.10 作为 JPA 提供程序。

在一个 bean 中,我有以下类和方法:

    @Repository
public class VentaDAO {

@PersistenceContext
private EntityManager em;

@Transactional
public void tryAprobarPago(Decidir decidir) {
long idAlmuerzoVenta = Long.parseLong(decidir.getSistemaClave());
AlmuerzoVenta almuerzoVenta = em.find(AlmuerzoVenta.class, idAlmuerzoVenta);

Almuerzo almuerzo = almuerzoVenta.getAlmuerzo();

almuerzo.assignNroEntradas(almuerzoVenta);

almuerzoVenta.setEstado(AlmuerzoVenta.Estado.APROBADA);
almuerzoVenta = em.merge(almuerzoVenta);

// force flush to detect potential version conflics BEFORE execute costly SQL operations
em.flush();

methodWithCostlySQLOperations();
}
}

当使用乐观锁定并且存在版本冲突时,@Transactional 方法会在方法完成执行后自动刷新数据库时抛出 Spring 的 ObjectOptimisticLockingFailureException,但是如果我在其中插入手动 flush()中间,Spring不拦截JPA的OptimisticLockException?这种行为使乐观锁定处理出现问题,因为异常会根据方法的编码方式而变化。

我宁愿只处理 ObjectOptimisticLockingFailureException

最佳答案

我想如果你想让 Spring 做自动错误处理(异常翻译)你需要用 @Repository 注释你的类

关于java - Spring 有时会抛出 ObjectOptimisticLockingFailureException,有时会抛出 OptimisticLockException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45064923/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com