Google app engine 如何使用JDO检查文本是否为空
我写这些代码Google app engine 如何使用JDO检查文本是否为空,google-app-engine,jdo,Google App Engine,Jdo,我写这些代码 Query q = pm.newQuery(User.class); q.setFilter("textPosts != null"); // textPosts is a Text List<User> users = (List<User>) q.execute(); resp.getWriter().println("user num: " + users.size()); 我确信这个数字应该大于0。 我可能错过了一些重要的事情。 提前谢谢 可能是因
Query q = pm.newQuery(User.class);
q.setFilter("textPosts != null"); // textPosts is a Text
List<User> users = (List<User>) q.execute();
resp.getWriter().println("user num: " + users.size());
我确信这个数字应该大于0。我可能错过了一些重要的事情。
提前谢谢 可能是因为
文本
不会按照javadoc中的规定为查询目的编制索引:
顺便说一句,我确信在这种情况下它必须抛出异常。:
在属性上具有筛选器或排序顺序的查询将永远不会与该属性未索引的实体匹配
因此找不到您的实体,因为文本属性从未被索引
这也是相关的(但在您的案例中,未编制索引的文本占优势)——:
App Engine数据存储区区分没有给定属性的实体和属性值为空的实体。JDO不支持这种区别:对象的每个字段都有一个值,可能为null。
因此,如果您有一个没有属性的实体,那么它将不会通过查询找到,因为a。谢谢!但我没有收到任何例外。对GAE来说,这很糟糕。当您错误配置索引时,它会抛出类似的例外,似乎不适合您的情况。谢谢!所以如果我想查询文本,它总是找不到?是的,你不能查询未索引的属性。文本始终未编制索引。
user num: 0