- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
有人可以指出错误吗?
注意:这是从我的真实应用程序中提取的简化测试用例。因此 3 个实体管理器的奇怪用法和em1.getTransaction().begin();em1.clear();em1.close();在每个部分的末尾。在真实的应用程序中,它发生在不同的时间。HibernateUtil 基本上是从教程中复制过来的。
HibernateUtil.open();
EntityManager em1 = HibernateUtil.reserveEntityManager();
em1.getTransaction().begin();
StringType st1 = new StringType();
st1.setName("a");
em1.persist(st1);
em1.getTransaction().commit();
em1.getTransaction().begin();
em1.clear();
em1.close();
EntityManager em2 = HibernateUtil.reserveEntityManager();
em2.getTransaction().begin();
StringType st2 = new StringType();
st2.setName("a");
st2.setId(st1.getId());
em2.merge(st2);
em2.getTransaction().commit();
em2.getTransaction().begin();
em2.clear();
em2.close();
EntityManager em3 = HibernateUtil.reserveEntityManager();
em3.getTransaction().begin();
StringType st3 = new StringType();
st3.setName("a");
st3.setId(st1.getId());
[b]em3.merge(st3);[/b]
em3.getTransaction().commit();
em3.getTransaction().begin();
em3.clear();
em3.close();
public static EntityManager reserveEntityManager()
{
return emf.createEntityManager();
}
public static void open()
{
try
{
emf = Persistence.createEntityManagerFactory("manager1");
}
catch (Throwable e)
{
throw new ExceptionInInitializerError(e);
}
}
javax.persistence.OptimisticLockException:org.hibernate.StaleObjectStateException:行已被另一个事务更新或删除(或未保存的值映射不正确):[WebOrganizer.classes.types.StringType#174] 在 org.hibernate.ejb.AbstractEntityManagerImpl.wrapStaleStateException(AbstractEntityManagerImpl.java:646) 在 org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException (AbstractEntityManagerImpl.java:600) 在 org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:237) 在 WebOrganizer.web.servlets.TypeServlet.test2(TypeServlet.java:356) 在 sun.reflect.NativeMethodAccessorImpl.invoke0( native 方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580) 在 org.testng.internal.Invoker.invokeMethod(Invoker.java:517) 在 org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669) 在 org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956) 在 org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126) 在 org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110) 在 org.testng.TestRunner.runWorkers(TestRunner.java:720) 在 org.testng.TestRunner.privateRun(TestRunner.java:590) 在 org.testng.TestRunner.run(TestRunner.java:484) 在 org.testng.SuiteRunner.runTest(SuiteRunner.java:332) 在 org.testng.SuiteRunner.runSequentially (SuiteRunner.java:327) 在 org.testng.SuiteRunner.privateRun(SuiteRunner.java:299) 在 org.testng.SuiteRunner.run(SuiteRunner.java:204) 在 org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:864) 在 org.testng.TestNG.runSuitesLocally(TestNG.java:830) 在 org.testng.TestNG.run(TestNG.java:748) 在 org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73) 在 org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124) 在 sun.reflect.NativeMethodAccessorImpl.invoke0( native 方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
引起:org.hibernate.StaleObjectStateException:行被另一个事务更新或删除(或未保存的值映射不正确):[WebOrganizer.classes.types.StringType#174] 在 org.hibernate.event.def.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:261) 在 org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:120) 在 org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:53) 在 org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:677) 在 org.hibernate.impl.SessionImpl.merge(SessionImpl.java:661) 在 org.hibernate.impl.SessionImpl.merge(SessionImpl.java:665) 在 org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:228) ... 还有 28 个
最佳答案
我会尝试这样的事情:
EntityTransaction tx1 = em1.getTransaction();
// make your modifications
em1.merge(st1);
tx1.commit();
不确定为什么要在清理 EntityManager 之前开始事务。我不以编程方式使用 JPA 事务,所以这只是一个有根据的猜测。另外,如果它返回相同的实例,为什么每次都要创建一个新的 EntityManager?
关于java - StaleObjectStateException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/430899/
我最近在尝试将子对象添加到父对象的列表时遇到了一些并发修改错误。 根据我所读到的内容,添加子对象会增加父对象的版本号,因此如果另一个线程正在执行我的创建方法,它会提示。 很公平。 我返回并尝试锁定域对
我在 Java J2EE Web 应用程序中使用 Hibernate 3.5.2 和 Spring Core 3.0.1。当不同的用户同时更新同一记录时,我收到 StaleObjectStateExc
在我的 Spring Boot Web 应用程序中,我有一个 Controller ,它提供了一种从数据库中删除实体的方法,该方法又调用 DAO 类。但是,当我调用 entityManager.rem
我已经为 StaleObjectStateException 苦苦挣扎了一个多星期,并决定在这里发布一个重现该问题的简单应用。 我了解 org.hibernate.StaleObjectStateEx
我们将 Hibernate 3.6.0.Final 与 JPA 2 和 Spring 3.0.5 结合使用,用于在 tomcat 7 和 MySQL 5.5 上运行的大型企业应用程序。应用程序中的大多
我应该在 ASP.NET MVC 应用程序的相应 Controller 中使用 try-catch block (旨在捕获/处理 StaleObjectStateException)包装对存储库的调用
有人可以指出错误吗? 注意:这是从我的真实应用程序中提取的简化测试用例。因此 3 个实体管理器的奇怪用法和em1.getTransaction().begin();em1.clear();em1.cl
当我尝试提交我的 session 时,另一个用户也更改了同一个对象,然后 Hibernate 抛出一个 StaleObjectStateException . 当我尝试从该异常中恢复时,我调用: se
我们将 Hibernate 3.6.3.Final 和 MySQL 5.5.8 用于 Web 应用程序。后端在 JBoss 6.0.0 Final 服务器上运行。大多数时候一切都很好,但偶尔我们会收到
我在使用 hibernate 的基于 Spring 框架的 Web 应用程序的 Controller 中遇到此异常。我尝试了很多方法来解决这个问题,但无法解决。 在 Controller 的方法 ha
我们试图在抛出 StaleObjectStateException 后合并对象以保存合并的副本。 这是我们的环境状况: 列表项 多用户系统 WPF 桌面应用程序、SQL Server 2008 数据库
当我的应用程序中出现乐观并发问题时,我的应用程序中会抛出 StaleObjectStateException 而不是 OptimisticLockException (正如我所读到的,我应该期待这个)
-更新: 事实证明,我们根本无法更新任何域对象。我们创建了非常简单的域/服务/ Controller 组合,但仍然出现StaleObjectStateException:行已由另一个事务更新或删除(或
当我尝试创建四个客户时,有代码。1.将Customer1,2写入数据库2. 合并Customer3(具有相同的id,例如1)3.合并Customer4(再次具有相同的id)我想创建同一实体的任何版本
我有一种情况,一个线程可以从数据库检索一个对象,并编辑它,当刷新它时,我得到一个 StaleObjectStateException 因为与此同时另一个线程编辑了同一个对象(我正在使用乐观锁定)。我可
在我的代码中,我通过 Hibernate 从数据库获取一个对象,更改一个字段并提交更改 session = HibernateUtil.beginTransaction(); Song
在哪里可以找到有关在基于版本的乐观锁定保存操作中捕获哪些异常的信息。 “互联网”上的文本表明 Hibernate 自己的或 JPA 的 OptimisticLockingException 中的任何一
我正在尝试将数据从一个数据库复制到另一个数据库。一切正常,直到源数据库中的一行被修改(下面的堆栈跟踪)。向目标数据库添加新行按预期工作。 我有一个包含以下 bean 的每个数据库连接(mysql 和
我有一个 Spring Controller 方法的问题。它实际上对同一实体进行了两次更新,这会导致 StaleObjectStateException 。 问题是,当我检索 Member 实例时,我
我有以下代码 studentInstance.addToAttempts(studentQuizInstance) studentInstance.merge() studentInstance.sa
我是一名优秀的程序员,十分优秀!