Objectify - 如何按布尔值过滤?
在过滤布尔值时,我在使用 Google AppEngine 数据存储的 Objectify 时遇到了困难。这大致就是我的情况:
class Task implements Serializable {
...
boolean failed;
...
}
无论我在搜索时做什么,尽管数据库中存在 failed = false
的对象,但我总是得到空响应
示例:
ofy().query(Task.class).filter("failed",false).list()
ofy().query(Task.class).filter("failed",Boolean.FALSE).list()
ofy().query(Task.class).filter("failed",0).list()
ofy().query(Task.class).filter("failed","false").list()
ofy().query(Task.class).filter("failed","FALSE").list()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我在谷歌搜索时发现了这个老问题,我想澄清它。
您应该能够通过布尔字段进行查询,只要它们在进入数据存储时已建立索引即可。以下是使用 Objectify 和 App Engine 单元测试库的完整单元测试(要运行它,您必须链接到 此处描述的单元测试 jar)。以下测试通过。所以问题出在其他地方,我建议你使用单元测试来发现它。
I found this old question while Googling and I wanted to clear it up.
You should be able to query by boolean fields as long as they are indexed at the time that they entered the datastore. Here's a complete unit test using Objectify and the App Engine unit test library (To run it, you have to link in the unit test jar described here). The following test passes. So the problem lies elsewhere, and I suggest that you use unit tests to discover it.
您尚未对布尔失败属性建立索引。
如果字段未建立索引,过滤器将无法在 objectify 数据存储中工作。
因此,要使其发挥作用,请添加“
现在您的过滤器将起作用”。
请注意,虽然已建立索引,但无法过滤已保存的值。因此,要么创建新记录并保存,要么读取所有数据存储实体并再次保存。
希望这有帮助。
You haven't Indexed boolean failed property.
If a field is not indexed, filter will not work in objectify datastore.
So to make it work, add
Now your filter will work.
Please note that though indexed, already saved values cannot be filtered. So either create new records and save or read all datastore entities and save it again.
Hope this helps.