2009年4月25日土曜日

GAEでオブジェクト比較

GAEでログインしたユーザだけのデータを表示したい。

そう思い立ちました。。。がっ!
JDOのオブジェクト比較にSQLってどうするんだろ?
と思い立ちしばし、、、

でできました。


UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();

PersistenceManager pm = SessionManager.get().getPersistenceManager();
Query query = pm.newQuery(Shop.class);

query.setFilter("creator == crrentUser");
query.declareParameters("com.google.appengine.api.users.User crrentUser");

try {
List<Shop> shopList = (List<Shop>)query.execute(user);
for ( Shop oldShop : shopList ) {
Shop newShop = new Shop(oldShop);
shopForm.addShop(newShop);
}
} finally {
query.closeAll();
}


Query::setFilter()でSQLイメージを作って
Query::declareParameters()で型を宣言します。
Query::execute()で比較するオブジェクトを設定しておきます。

これでOKですね!
ログインしたユーザのみの機能もこれでOKですね。

0 件のコメント: