0
我有以下两个实体:AppEngine上:在一个拥有双向one-to-many关系保留孤儿
@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,键) ,所有孤儿也将被删除。我阅读了文档中的relevant paragraph,甚至用@Element(依赖=“false”)用JDO尝试过,但问题仍然存在。我怎样才能保留这个关系中的孤儿?
保留(或创建)孤儿在App Engine中很有意义。拥有共享共同父项的两个实体(即使该父项不存在)是您如何将事物放入同一个实体组中 - 通过拥有一个虚构的实体作为它们的父代。在这种情况下,JDO语义和App Engine语义的差异足以导致我认为的一些混淆。说“保留孤儿没有意义”并不公平。 –
不知道“JDO语义”和“AppEngine语义”之间有什么不同。 JDO只是定义了一个API。它没有强制删除,或者没有父键时(因为它没有强制父键的任何要求)。上面描述的逻辑是GAE工作人员在他们的JDO插件中体现的(因为有道理)。 – DataNucleus