gpt4 book ai didi

java - Datanucleus Google App Engine 一对多关系

转载 作者:太空宇宙 更新时间:2023-11-04 08:08:02 26 4
gpt4 key购买 nike

我有以下代码:

@Entity
public class Incident {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true")
private String incidentId;

@Persistent
@Extension(vendorName="datanucleus", key="gae.pk-id", value="true")
private Long keyId;


@OneToMany(mappedBy="incident")
@OrderBy("requestId")
@JoinColumn(name="INCIDENT_ID")
public List<ServiceRequest> requests;

...
}

@Entity
public class ServiceRequest {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true")
private String requestId;

@Persistent
@Extension(vendorName="datanucleus", key="gae.pk-id", value="true")
private Long keyId;
private Incident incident;

...
}

使用它的场景是首先创建并保留 ServiceRequest,然后创建一个事件并将其添加到现有的 ServiceRequest - 但是当我尝试保留一个事件时,出现以下错误导致:org.datanucleus.exceptions.NucleusUserException:ID为“agxzbWFydGNpdHlhZ2hyFAsSDlNlcnZpY2VSZXF1ZXN0GAEM”的对象由不同的对象管理器管理

最佳答案

我建议您按如下方式开始,然后告诉您深入研究有关所有数据存储的文档,JDO Stuff。然后感谢谷歌。 :-)

您必须使用相同的持久性管理器一次执行所有读取/创建/保存/更新任务。这意味着在相同的方法或代码块中,您必须:

  • 获取新的 PersistenceManager
  • 获取您需要的EntityA
  • 用它做任何你想做的事情,包括实例化其他类中的其他实体并以某种方式将它们全部链接起来
  • 使用 pm 保存所有内容
  • 关闭私信

问题是,如果您使用多个实体,则需要使用相同的 PersistenceManager 实例。

JDO doc - Google

关于java - Datanucleus Google App Engine 一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11741579/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com