2009年5月14日木曜日

GAE/Jでencoded-pkを使ったEntityをPersistenceManager#deletePersistence()できなくて困っている

GAE/Jではテーブルの親子関係を構成するために、Entityの主キーにcom.google.appengine.api.datastore.Keyを使う事が殆どだと思う。例えば以下に示す"Parent1"クラスのようなカンジ。

Keyオブジェクトが保持する連番をレコードのIDぽく使いたいなーと思って、KeyにencodedStringを使い、KeyのID値も別途保持できるような構成を作ってみた。例えば以下に示す"Parent2"クラスのようなカンジ。Owned relationshipの構成で保持しているChild2クラスも同様にencodedStringを使ったKeyを保持している。

こいつを削除するための処理として、以下のようにPersisteceManager#deletePersistence()を使って記述する。

Parent1は問題無く削除が動作しているが、Parent2の場合にだけExceptionが発生する。

なんでやろー??わかる人教えてください><

ちなみに、DataStoreService#delete()だと問題無く動作するんだけど、こっちはdelete cascadeが走らないんだよなー。

コメントを投稿