Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objectify 为什么这个按id进行的对象化查询没有';返回结果_Objectify - Fatal编程技术网

Objectify 为什么这个按id进行的对象化查询没有';返回结果

Objectify 为什么这个按id进行的对象化查询没有';返回结果,objectify,Objectify,我发布了hole jsf方法,但最重要的一行是: Food-Food=ofy().load().type(Food.class).id(lng.now() 实体食品: @Entity public class Food implements Serializable { private static final long serialVersionUID = 1L; @Id Long id; @Parent @Load Key<TableParent> ow

我发布了hole jsf方法,但最重要的一行是: Food-Food=ofy().load().type(Food.class).id(lng.now()

实体食品:

@Entity
public class Food implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id Long id;
    @Parent @Load Key<TableParent> owner;
    @Index String name;
    String description;
    byte[] image;
    @Load Ref<Category> category;

    public Food () {
    }
@实体
公共类食品实现可序列化{
私有静态最终长serialVersionUID=1L;
@Id长Id;
@父@加载密钥所有者;
@索引字符串名称;
字符串描述;
字节[]图像;
@负载参考类别;
公共食品(){
}

是的。它有父项,但我不在这里发布它,因为这个父项不应该在简单的ID查询中使用。我确信该ID存在,并且真的看不到返回总是null的原因。这可能是一致性问题,但我在同一个项目上反复进行此查询。在同一个本地工作并部署到google app engine-对于已存在数小时的对象,始终返回null。

如果没有父项,则无法访问具有父项的实体。我无法仅通过Id访问实体,因为可能存在具有相同Id但具有其他父项的其他实体。因此,在此类查询中必须使用父项:

Food food = ofy().cache(false).load().key(Key.create(Key.create(TableParent.class, parent.getId()), Food.class, lng)).now();

这将完成作业

如果没有父项,则无法访问具有父项的实体。我无法仅通过Id访问实体,因为可能存在其他具有相同Id但具有其他父项的实体。因此,在此类查询中必须使用父项:

Food food = ofy().cache(false).load().key(Key.create(Key.create(TableParent.class, parent.getId()), Food.class, lng)).now();

这就完成了任务

在GAE中无法按id进行查询,除非您显式创建一个单独的索引字段,并复制id值。但请记住,id仅在父范围内是唯一的,因此它可能不会执行您想要的操作

Objectify的load by id是一个load by key操作。您的示例:

ofy().load().type(Food.class).id(lng).now();
这只是一个快捷方式:

ofy().load().key(Key.create(Food.class, lng)).now();

现在,您可以了解为什么还需要添加.parent()调用。

在GAE中无法按id进行查询,除非您使用复制的id值显式创建一个单独的索引字段。但请记住,id仅在父范围内是唯一的,因此它可能无法满足您的需要

Objectify的load by id是一个load by key操作。您的示例:

ofy().load().type(Food.class).id(lng).now();
这只是一个快捷方式:

ofy().load().key(Key.create(Food.class, lng)).now();
现在您可以了解为什么还需要添加.parent()调用