google-app-engine - 如何在 Objectify 中取消索引列表?

标签 google-app-engine indexing entity objectify

为什么无法取消对对象化实体列表的索引?

为了演示这个问题,我做了一个简单的示例项目。

我用的是实体

@Entity
public class Car {
    @Id String id;
    @Unindex List<Passenger>  passengers;
}

对象

public class Passenger {
    String name;
}

并使用这个简单的方法保存它。

public class CarFactory {

    public void writeCarEntity() {
        Car car = new Car();
        car.setId("myCar");

        List<Passenger> passengers = new LinkedList<Passenger>();

        Passenger carl = new Passenger();    
        carl.setName("Carl");

        Passenger pete = new Passenger();
        pete.setName("Pete");

        Passenger jeff = new Passenger();
        jeff.setName("Jeff");

        passengers.add(carl);
        passengers.add(pete);
        passengers.add(jeff);

        car.setPassengers(passengers);

        ObjectifyService.register(car.getClass());
        ObjectifyService.ofy().save().entity(car).now();
    }
}

在数据存储中查找实体,您将获得以下信息:

This is a screenshot from the Datastore

尽管 passenger 字段有注释 @Unindex 它将被索引,正如在 google“数据存储”中所见。为什么注释 @Unindex 在这个例子中没有效果???

最佳答案

这与 Objectify 无关,似乎是数据存储的一些新怪癖。这可能只是 UI 中的显示故障。是否会导致问题?

使用您发布的代码,Objectify 将调用 Entity.saveUnindexedProperty()passengers 上字段(即使没有 @Unindex 注释)。但是,即使 Objectify 尝试对其进行索引,从历史上看,您也无法对嵌入式对象进行索引,因此不清楚对它们的列表进行索引意味着什么。也许谷歌正在推出一些新行为,但他们还没有让 GUI 正常工作?或者他们的保存行为可能存在错误?

如果您想成为一个好公民,请使用低级 API(一个 Entity 包含类型为 List<EmbeddedEntity> 的属性)创建一个简单的测试用例,验证是否会发生同样的行为,并将错误提交到GAE 问题跟踪器。

关于google-app-engine - 如何在 Objectify 中取消索引列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42485539/

相关文章:

Python:根据计数条件删除行

postgresql - 时间戳与当前时间的部分索引

symfony - 实体中的Symfony/原则关系COUNT

python - 如何修改web2py下载函数以在文件没有更改的情况下返回 "304 Not Modified"?

python - GAE 更喜欢 webapp2 还是 flask?

algorithm - 计算倒排索引中的词接近度

html - 是否存在移动 html 实体

html - 上下三角形的 HTML 实体是什么?

python - Google 应用引擎 ReferenceProperty 与 Key

python - "TypeError: object of type ' NoneType ' has no len()"登录Webapp2 Auth示例代码后