我有以下两个实体:
@Entity
public class SupermarketChain {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true")
private String key;
@OneToMany(mappedBy = "supermarketChain")
@Basic
private List<Supermarket> supermarkets;
}
@Entity
public class Supermarket {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true")
private String key;
@ManyToOne(optional=true)
private SupermarketChain supermarketChain;
}
当我使用em.remove(SupermarketChain.class,key)删除父级时,所有孤儿也将被删除。我在文档中阅读了relevant paragraph,甚至在JDE上使用@Element(依赖=“false”)进行了尝试,但问题仍然存在。如何在这种关系中保留孤儿?
答案 0 :(得分:0)
保留一个孤儿是没有意义的。在GAE JDO / JPA的v1中,所有关系都是“拥有”的,因此您必须拥有任何子女的父母。如果父级不再存在,则删除子级。总是。
在GAE JDO / JPA的第2版中,您还可以拥有无主对象,因此没有“父”,因此它们可以继续存在。