java - Objectify 找不到似乎存在的实体

标签 java google-app-engine objectify google-cloud-datastore

我在 Google App Engine 上使用 Objectify 5.1.1。我定义了一个名为 Insight 的 Objectify 实体,并尝试通过名为 Downloaded 的 boolean 属性来查询它。但是,Objectify 找不到该实体。

这是我尝试执行查询的方式:

Query<Insight> insightQueryTemplate = ofy().load().type(Insight.class).
                filter("downloaded", false).first().safe();

这是 Insight 的精简类定义:

@com.googlecode.objectify.annotation.Entity
public class Insight {
    @com.googlecode.objectify.annotation.Id 
    public Long id;

    public boolean downloaded = false;

    public Insight () { }

}

当我查看开发服务器的数据存储区时,我可以看到该实体确实存在,但 downloaded 属性显示“false(未索引)”而不是简单的“false”。

我很确定这曾经适用于 Objectify 3.1 那么我做错了什么?

最佳答案

我认为标签@com.googlecode.objectify.annotation.Index需要在类上进行注释,如下所示:

@com.googlecode.objectify.annotation.Entity
public class Insight {
    @com.googlecode.objectify.annotation.Id 
    public Long id;

    @com.googlecode.objectify.annotation.Index  // *** This was missing ***
    public boolean downloaded = false;

    public Insight () { }

}

根据https://cloud.google.com/appengine/docs/java/datastore/indexes#Java_Unindexed_properties ,属性可以使用 setProperty()setUnindexedProperty() 设置。但目前documentation for Objectify表示属性默认设置为未索引。

因此,我使用 @com.googlecode.objectify.annotation.Index 注释了我的类,问题得到了解决。

关于java - Objectify 找不到似乎存在的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27326754/

相关文章:

java - 是否有可用的 GAE 上的 ReSTLet 开源项目?

java - 在 Java 中下载受用户名和密码保护的文件时出现 IOException

java - 使用java实现定时器任务

java - LWJGL 和 Ogg/Mp3

google-app-engine - 有没有办法为 ndb.get_multi() 指定投影?

python - 如何使用sqlalchemy调用存储过程

java - 翻译 SAX 异常

android - 无法在 Eclipse : "App Engine Connected Android Project" 中创建 "Creation of element failed"

java - 与 IN 相反的对象化查询

java - 使用 Objectify 进行地理空间半径搜索