【问题标题】:OpenJPA OptimisticLockException: Detaching object from one PersistenceUnit and saving it to anotherOpenJPA OptimisticLockException:从一个 PersistenceUnit 分离对象并将其保存到另一个
【发布时间】:2013-07-11 11:56:28
【问题描述】:

我从一个数据库中获取我的域对象,然后将它们保存到另一个空数据库。我将 Spring Roo 用于持久层,因此我对持久化的完成方式几乎没有控制(使用合并与持久化)。

坚持时,我得到了异常:

OptimisticLockException:试图附加已删除的实例类型 带有 oid “xxx”的“class xxx”。如果实例是新的,版本字段 应该保留其默认值

据推测,我应该能够将对象的“pcVersionInit”字段设置为 false,让它仍然存在,但这不起作用。

知道如何在域对象级别执行此操作吗?

【问题讨论】:

  • 您的实体有生成的 ID 吗?
  • 是的,瑞克:@GeneratedValue(strategy = GenerationType.AUTO)
  • 即使正确设置了 pcVersionInit 字段,您也会遇到问题。由于您将该字段标记为 @GeneratedValue,因此 OpenJPA 假定 ID 字段将为空,而在您的情况下,它不会是。

标签: java jpa openjpa


【解决方案1】:

删除 Id 字段上的 @GeneratedValue 注释解决了这个问题。谢谢你的提示,瑞克!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 2022-11-26
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    相关资源
    最近更新 更多