这个查询是用JDO编写的,我在其中根据用户所在的国家/地区过滤用户。 Contacts Kind有一个物业国家。仅提取其国家/地区位于以下列表中的那些用户。

List<String> countryList = Arrays.asList("USA","India","France");



SELECT FROM Contacts WHERE :countryList.contains(country) && loginType == 'Google' && dateAdded >= 0 && dateAdded <= 1567078411000 ORDER BY dateAdded DESC RANGE 0,30


如何在底层数据存储区中为上述查询编写代码?

最佳答案

尽管这不是推荐的解决方案,但在迁移到较新的App Engine运行时之前,它需要升级到推荐的API,您可以使用Java App Engine API client进行此类“ WHERE IN”查询。像下面的例子一样:

List<String> countryList = Arrays.asList("USA","India","France");

Filter propertyFilter =
        new FilterPredicate("height", FilterOperator.IN, countryList);
Query q = new Query("Contacts").setFilter(propertyFilter);


但是,新的Datastore Client Library for Java不支持此功能,这是因为,在后台,Datastore将此查询转换为列表中每个元素的单个查询。就像在post中解释的那样。

09-25 21:16