我有一个称为“帐户”的实体类型。字段之一是一个名为selfie
的字符串,它基本上是用户上传的自拍的url。我想为有自拍照的用户获取数据(因此,如果用户没有自拍照,则不应将其包含在结果集中)。我有以下查询。但它不起作用,因为我将"NULL"
作为字符串。正确的方法是什么?同样,我只希望拥有自拍照的用户。
Filter selfie = new FilterPredicate("selfie", FilterOperator.GREATER_THAN, "NULL");
Query query = new Query(Account.class.getSimpleName()).setFilter(selfie);
FetchOptions options = FetchOptions.Builder.withLimit(30);
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
QueryResultList<Entity> entities = datastore.prepare(query).asQueryResultList(options);
我也对在App-Engine上执行此操作的JDO/JPA方法持开放态度(但必须在App-Engine上工作)。
最佳答案
这应该像
Filter selfie = new FilterPredicate("selfie", FilterOperator.NOT_EQUAL, null);
您实际在其中传递Java空值(不是String)并使用不等于进行过滤(请参见https://stackoverflow.com/a/22200137)。
就个人而言,我一直在使用JDO进行数据存储管理,这有其优点和缺点。让我知道您是否也想使用JDO解决方案。干杯!