当前位置: 首页 > 知识库问答 >
问题:

JPA EntityManager的合并方法会导致OptimisticLockException吗?

仉峻
2023-03-14

假设我想合并一个分离的实体。当我做的时候

T mergedEntity = entityManager.merge(detachedEntity);

entityManager将从数据库加载一个实体(具有与detachedEntity相同的标识符),并将所有数据从detachedEntity复制到新加载的实体。当以后我的事务结束时,这个实体将保存到数据库中。

共有1个答案

范文昌
2023-03-14

因为merge()方法不是引发此异常的方法。当实体在内存中的状态将刷新到数据库时,将引发此异常。当调用merge()时,当调用flush()时,无论是明确地,还是在提交之前,或在执行查询之前,都不会发生这种情况。

 类似资料:
  • 问题内容: 我将SEAM与JPA(实现为Seam托管持久性上下文)一起使用,在后备bean中,我将一组实体(ArrayList)加载到后备bean中。 如果不同的用户修改了另一个会话中的实体之一,而我希望将这些更改传播到会话中的集合中,则我有一种方法并尝试了以下方法… 用以下查询 重新执行查询,这只会返回我已经拥有的相同数据(我假设它正在使用一级缓存而不是访问数据库) 调用,这应该从数据库刷新,但

  • 我正在尝试使用、和(不使用)实现实时相机应用程序 所以,我发现这篇教程 http://altitudelabs.com/blog/real-time-filter/ 它是用Objective-C编写的,所以我在Swift4.0中重写了那个代码,xcode9 它看起来工作很好,但有时(很少),它崩溃了以下错误。调用的方法时 EXC_BAD_ACCESS(代码=1,地址+0x************)

  • 情况是这样的:我有一个ObservableSet(因为我的数据的ID字段必须是唯一的),它有一个侦听器。该侦听器更新ObservableList。ObservableList反过来由TableView监听。(根据注释,这都是必要的,因为在JavaFX中不能使用ObservableSet支持TableView。) 然而,我们发现对集合执行多个操作不会触发TableView的刷新。 null 但是,编

  • 场景: 我只有一个生产者和消费者,只有一个队列来传输消息。使用者将根据已使用该值的消息更新DB上的值。不应将任何操作并行发送到DB。所以,我们不应该做任何导致数据库上数据并发的事情。我使用一次接收一条消息。删除是否会导致多个操作并行发送到DB?

  • 我正在进行搜索,然后循环搜索结果。这会导致我的代码被锁定,更糟糕的是,它会锁定数据库,使其无法进一步使用。即使在浏览器关闭之后。当然,在我再次尝试我的代码之前,这种“锁定”似乎会在一段时间后被清除。我将改变我执行这项特定任务的方式,但我很好奇是什么导致了这种锁定。

  • 我遇到了一种奇怪的行为。我的应用程序有一个主要活动,由navdrawer布局和默认列表片段组成。列表片段使用改造客户端获取内容。选择列表项时,将显示详细视图。在小屏幕上,通过单独的活动加载详细信息视图。该活动还使用改装客户端获取详细信息。然后,可以从生成新活动的navdrawer中选择一个选项。该活动也使用改造客户端发送数据。 列表和详细活动很好地调用了改造方法。我可以看到日志和事情正在按预期工作