Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在没有版本注释或OptimisticLocking策略的情况下获取ObjectOptimisticLockingFailureException_Java_Spring_Postgresql_Jpa_Spring Data - Fatal编程技术网

Java 在没有版本注释或OptimisticLocking策略的情况下获取ObjectOptimisticLockingFailureException

Java 在没有版本注释或OptimisticLocking策略的情况下获取ObjectOptimisticLockingFailureException,java,spring,postgresql,jpa,spring-data,Java,Spring,Postgresql,Jpa,Spring Data,我得到了乐观锁定异常(如下所述),但奇怪的是,我们没有用@version注释或乐观锁定指定任何实体,所以想知道是什么导致了这个异常?我们正在使用JPA、hibernate、spring数据和spring。数据库是postgresql System exception occurred while processing request, ERROR_CODE: a18d5739 org.springframework.orm.ObjectOptimisticLockingFailureExcept

我得到了乐观锁定异常(如下所述),但奇怪的是,我们没有用@version注释或乐观锁定指定任何实体,所以想知道是什么导致了这个异常?我们正在使用JPA、hibernate、spring数据和spring。数据库是postgresql

System exception occurred while processing request, ERROR_CODE: a18d5739 org.springframework.orm.ObjectOptimisticLockingFailureException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; nested exception is org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:301)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:225)
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:521)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:761)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:730)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:485)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:291)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)

这与乐观锁无关。删除/更新完全不存在的Id记录时引发此异常。因此,请检查您正在更新/删除的记录是否确实存在于数据库中

但是,要更好地处理问题的原因,您可以:

1) 将show_sql设置为true 2) 将Spring和Hibernate的日志级别设置为DEBUG


这将帮助您了解问题并解决问题。

感谢您的回复。那么为什么要抛出这个异常呢?根据javaDocs的说法,在同一条记录上存在两个事务可能会违反乐观锁定。您可以在此处查看此案例,希望这能帮助您=)