gpt4 book ai didi

java - 如何使用 JPA 在特定实体组中创建对象? (谷歌应用引擎 Java)

转载 作者:行者123 更新时间:2023-11-30 09:50:53 24 4
gpt4 key购买 nike

我想在 JPA 中使用 GAE-J 中的事务。

如果没有 JPA,它应该是:

Entity child= new Entity("Child", "ParentKey");

但是如何使用 JPA 来实现呢?

@Entity
public class Parent{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key id;
private String text;
}

@Entity
public class Child{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key id;
private Parent parent;
private String text;
}

尝试...

Parent parent = new Parent();
em.persist(parent);
em.refresh(parent);

Child child = new Child();
child.setParent(parent);
em.persist(child);

这行不通:

org.datanucleus.store.appengine.DatastoreRelationFieldManager$ChildWithoutParentException:
Detected attempt to establish Child(130007) as the parent of Parent(132001) but the entity identified by Child(132001) has already been persisted without a parent. A parent cannot be established or changed once an object has been persisted.

这听起来有点背道而驰...我是个笨蛋吗?或者有什么简单的方法吗?

谢谢!

最佳答案

好的...只是我第一次尝试的一个小错误。

这应该有效:

@Entity
public class Parent{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key id;
private String text;
@OneToMany(targetEntity=Child.class, mappedBy="parent", fetch=FetchType.LAZY)
private Set<Child> children = new HashSet<Child>();
}

@Entity
public class Child{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key id;
@ManyToOne(fetch=FetchType.LAZY, targetEntity=Parent.class)
private Parent parent;
private String text;
}

关于java - 如何使用 JPA 在特定实体组中创建对象? (谷歌应用引擎 Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4909012/

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