2009年4月25日土曜日

GAEでオブジェクト比較

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

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

でできました。

  1. UserService userService = UserServiceFactory.getUserService();  
  2. User user = userService.getCurrentUser();  
  3.   
  4. PersistenceManager pm = SessionManager.get().getPersistenceManager();  
  5. Query query = pm.newQuery(Shop.class);  
  6.   
  7. query.setFilter("creator == crrentUser");  
  8.    query.declareParameters("com.google.appengine.api.users.User crrentUser");  
  9.      
  10. try {  
  11.  List<Shop> shopList = (List<Shop>)query.execute(user);  
  12.  for ( Shop oldShop : shopList ) {  
  13.   Shop newShop = new Shop(oldShop);  
  14.   shopForm.addShop(newShop);  
  15.  }  
  16. finally {  
  17.  query.closeAll();  
  18. }  


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

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

0 件のコメント: