AppEngine:在一个拥有的,双向的一对多关系中保留孤儿

时间:2011-10-19 15:37:59

标签: google-app-engine jpa jdo

我有以下两个实体:

@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”)进行了尝试,但问题仍然存在。如何在这种关系中保留孤儿?

1 个答案:

答案 0 :(得分:0)

保留一个孤儿是没有意义的。在GAE JDO / JPA的v1中,所有关系都是“拥有”的,因此您必须拥有任何子女的父母。如果父级不再存在,则删除子级。总是。

在GAE JDO / JPA的第2版中,您还可以拥有无​​主对象,因此没有“父”,因此它们可以继续存在。