Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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 使用jpa更新对象时出现问题_Java_Jpa_Openjpa - Fatal编程技术网

Java 使用jpa更新对象时出现问题

Java 使用jpa更新对象时出现问题,java,jpa,openjpa,Java,Jpa,Openjpa,我在尝试使用jpa持久化对象时遇到以下错误。我遇到以下错误 NestedThrowables: <openjpa-1.2.2-SNAPSHOT-r422266:778978M-OPENJPA-975 nonfatal store error> org.apache.openjpa.persistence.OptimisticLockException: An optimistic lock violation was detected when flushing object ins

我在尝试使用jpa持久化对象时遇到以下错误。我遇到以下错误

NestedThrowables:
<openjpa-1.2.2-SNAPSHOT-r422266:778978M-OPENJPA-975 nonfatal store error> org.apache.openjpa.persistence.OptimisticLockException: An optimistic lock violation was detected when flushing object instance "org.apache.openjpa.enhance.com$ibm$cloud$bss$client$db$data$Offeringattribute$pcsubclass-com.ibm.cloud.bss.client.db.data.Offeringattribute-10013800" to the data store.  This indicates that the object was concurrently modified in another transaction.
但我不记得我上次是否做了其他事情。即使在添加此flush语句后,我也会出现此错误


注意:我正在以备用控制台应用程序的形式运行我的应用程序,并且我确信只有一个线程正在运行

如果您尝试更新自加载以来由其他人/事物更新的记录,则会发生乐观锁定异常。这不需要多个线程

您应该能够通过在修改和保存实体之前重新加载该实体来解决问题

----更新以回答问题---

安全的方法是关闭会话并使用load或get,并确保不更改version属性(假设您有这样的东西)

通常这不是您想要做的,如果您只使用线程上的实体,会话中的实体应该是当前的。因此,可能只是确保在合并足够时不更改版本:从会话中加载或获取实体,将版本存储在变量中,执行合并,重置版本,刷新/提交可能会起作用


如果没有,我需要更多信息,了解您实际在做什么。

您在运行时启用了子类化,并且存在许多已知问题。首先,从阅读这一页开始。这不应该超过几分钟,从长远来看,你会是一个更快乐的露营者。该链接的网络是,您需要设置以下属性并使用另一种增强方法

<openjpa.RuntimeUnenhancedClasses=unsupported/>

如果这不能让你继续,你需要发布你的实体,以获得更多关于发生了什么的线索


-Rick

在openJPA中,我从未在同一个实体上进行过两次操作。尝试
<openjpa.RuntimeUnenhancedClasses=unsupported/>