删除objectify数据存储中的过滤器记录

问题描述 投票:0回答:1

我想删除company_id为“****”而gamer_id为“****”的记录。 如何为此编写查询。

public List<CompanyGamer> unfollowcompany(CompanyGamerForm CompanyGamerForm) throws NotFoundException {
        String company_id = CompanyGamerForm.getCompany_id();
        String gamer_id = CompanyGamerForm.getGamer_id();
        Iterable<Key<CompanyGamer>> allKeys = ofy().load().type(CompanyGamer.class).filter("company_id=", company_id).filter("gamer_id=", gamer_id).keys();
        ofy().delete().keys(allKeys); }
请让我知道应该定义什么作为回报?

google-cloud-platform google-cloud-datastore google-cloud-endpoints
1个回答
0
投票

查看“执行查询”部分底部的 Objectify 查询文档 https://github.com/objectify/objectify/wiki/Queries。 “您可以只查询键,这将比获取整个对象更有效地返回 Key 对象”

Iterable<Key<Gamercompany>> allKeys = ofy().load().type(Gamercompany.class).filter("company_id=", compnyid).filter("gamer_id=",gamer_id).keys();

然后就可以删除该键对应的所有实体了:

ofy().delete().keys(allKeys);

或者,如果您确实想执行返回实体而不是键的查询,您可以迭代查询并执行以下操作:

ofy().delete().entity(thing);        // asynchronous

ofy().delete().entity(thing).now();  // synchronous

但是效率会比第一种方式低。

© www.soinside.com 2019 - 2024. All rights reserved.