سؤال

يمكن للمرء استخدام بناء جملة JDD بسهولة للاستعلام على معلمات متعددة على النحو التالي:

//specify the persistent entity you're querying and you filter usign params
query = pm.newQuery(MyClass.class, " customer == paramCustomer && date >= paramStartDate && date <=paramEndDate ");

// declare params used above
query.declareParameters("com.google.appengine.api.users.User paramCustomer, java.util.Date paramStartDate, java.util.Date paramEndDate"); 

//pass the object declared as params
MyClassList = (List<MyClass>) query.execute(user, startDate, endDate);

انها واضحة لبناء سلسلة برمجيا مع مرشح:

"customer == paramCustomer && date >= paramStartDate && date <=paramEndDate"

ومشتقل آخر مع إعلان المعالم:

"com.google.appengine.api.users.User paramCustomer, java.util.Date paramStartDate, java.util.Date paramEndDate"

ما لم يكن الفوري هو التوصل إلى استراتيجية لتنفيذ الاستعلام اعتمادا على المعارف الموجودة في المرشح (وتم إعلانها)، لذلك في نهاية المطاف مع عدد من البيانات القبيحة والمصحة المخصصة بالفعل إذا كان الأمر كذلك التباديل الممكنة لتنفيذ الاستعلام (جميع المعارف، فقط الأول، فقط الثاني، الأول والثاني وغيرها ...):

MyClassList = (List<MyClass>) query.execute(user, startDate, endDate);

أنا متأكد من أن هذه مهمة شائعة وشخص آخر يفعله بطريقة أكثر عمومية وفعالة.

أي اقتراح؟

هل كانت مفيدة؟

المحلول

لقد وجدت حلا في الطريقة query.executeWithArray

بهذه الطريقة يمكنني بناء المرشحات وإعلان المخمل ديناميكيا تحميل الكائنات الفعلية في صفيف من الكائن الذي يتم تمريره بعد ذلك إلى الطريقة المذكورة أعلاه.

طريقة مهمة أخرى هي executeWithMap يمكنك استخدام Wich ل Bind Parameters بالاسم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top