首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >org.springframework.orm.ObjectOptimisticLockingFailureException对javax.persistence.OptimisticLockException

org.springframework.orm.ObjectOptimisticLockingFailureException对javax.persistence.OptimisticLockException
EN

Stack Overflow用户
提问于 2019-07-26 14:27:52
回答 1查看 1.5K关注 0票数 1

我在一个SpringBoot应用程序中有一段代码。SpringBoot v1.5.14 SpringBoot

代码语言:javascript
复制
    try {           
        bookAction result = bookActionRepository.save(bookAction);
    } catch (ObjectOptimisticLockingFailureException e) {
        LOG.error (e.getMessage());
    }
    return false;

但我在申请中有一个例外:

代码语言:javascript
复制
javax.persistence.OptimisticLockException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect)

OptimisticLockExceptionObjectOptimisticLockingFailureException有什么区别?我如何知道哪个异常会抛出应用程序?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-08 17:51:06

ObjectOptimisticLockingFailureExceptionSpring ORM (通常是Spring Data JPA的一部分)使用,表示OptimisticLocking失败了,因此某些更改的数据将在当前事务中或在其他事务中执行。

在研究了Spring类之后,我找到了一个可能是您的答案的类。请参阅JpaOptimisticLockingFailureException。此异常的代码非常简单:

代码语言:javascript
复制
public class JpaOptimisticLockingFailureException extends ObjectOptimisticLockingFailureException {

    public JpaOptimisticLockingFailureException(OptimisticLockException ex) {
        super(ex.getMessage(), ex);
    }

}

请注意,它扩展了ObjectOptimisticLockingFailureException并接受了javax.persistence.OptimisticLockException,并使用从OptimisticLockException获取的消息调用超级构造器。这就是为什么您会看到这样的异常消息。

回答你的问题:

OptimisticLockException和ObjectOptimisticLockingFailureException有什么区别?

OptimisticLockException是特定于JPA的,JPA是由许多厂商(比如Hibernate)实现的接口,而ObjectOptimisticLockingFailureException是特定于在内部使用JPA/Hibernate的Spring ORM

我如何知道哪个异常会抛出应用程序?

如果您正在使用Spring ORM,您应该捕获ObjectOptimisticLockingFailureException异常,因为这是HibernateOptimisticLockingFailureExceptionJpaOptimisticLockingFailureException的一个超类,因此这个类是最通用的,它的实现可能会包装其他具体的异常(如上面所示)。还请记住,这些异常是RuntimeException,因此如果您想要基于它们执行某些处理,则应该显式地捕获它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57222104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档