0
私は、次の2つのエンティティがありますのAppEngine:所有する、双方向の1対多の関係で保持孤児
私はem.removeを持つ親を削除してい@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;
}
(SupermarketChain.class、キー)すべての孤児も削除されます。私はドキュメント内のrelevant paragraphを読んで、@ Element(dependent = "false")でJDOを試してみましたが、問題は残ります。どのようにして孤児をその関係に保つことができますか?
App Engineでは、孤児を保持する(または作成する)ことは意味があります。共通の親を共有する2つのエンティティを持つことは、たとえその親が存在しなくても、同じエンティティグループに物事をどのように置くかです。つまり、両者の親である架空のエンティティを持つことです。これは、JDOのセマンティクスとApp Engineのセマンティクスが、私が思うところで混乱を起こすほど十分に異なる場合です。 「孤児を守ることは意味をなさない」と言っても間に合わない。 –
「JDOセマンティクス」と「AppEngineセマンティクス」の違いを知りません。 JDOは単にAPIを定義します。親キーがないときは、削除を要求したり、親キーがない場合は(親キーについても何も要求しないため)。 (私が上で述べた)ロジックは、GAEのスタッフがJDOプラグインに実装したものです(意味があるように)。 – DataNucleus