كيفية جلب البيانات من قبل المستخدم من Google Datastore؟
-
11-09-2019 - |
سؤال
أنا ألعب مع محرك تطبيق Google وبعد قليل من المتاعب استفسلة jdedql.
يوضح المثال كيفية جلب الاشياء من DataStore:
PersistenceManager pm = PMF.get().getPersistenceManager();
String query = "select from " + Greeting.class.getName();
List<Greeting> greetings = (List<Greeting>) pm.newQuery(query).execute();
ولكن ماذا لو أردت جلب الأشياء فقط لمستخدم معين؟
في أسفل الصفحة في الرابط أعلاه يظهر أننا يمكن أن يكون هناك شيء مثل:
select from guestbook.Greeting where author == 'alfred@example.com'
ولكن إذا حاولت ما يلي، فلا يجلب أي شيء:
PersistenceManager pm = PMF.get().getPersistenceManager();
String query = "select from " + Greeting.class.getName() + " where author == '" + user.GetEmail() + "'";
List<Greeting> greetings = (List<Greeting>) pm.newQuery(query).execute();
أين user
جلب كما هو موضح في نفس المثال مثل هذا:
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
أنا متأكد من أن هذه مهمة شائعة، لكنني لا أستطيع الحصول عليها للعمل - أي مساعدة في تقديرها!
المحلول
بعد مناقشة هذا الموضوع على مجموعات Google حصلت عليه العمل مثل هذا:
String select_query = "select from " + Greeting.class.getName();
Query query = pm.newQuery(select_query);
query.setFilter("author == paramAuthor");
query.declareParameters("java.lang.String paramAuthor");
greetings = (List<Greeting>) query.execute(user);
بناء جملة JDQL محترق ...
لا تنتمي إلى StackOverflow