Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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
Google app engine GoogleAppEngine-带有一些自定义过滤器的查询_Google App Engine_Objectify - Fatal编程技术网

Google app engine GoogleAppEngine-带有一些自定义过滤器的查询

Google app engine GoogleAppEngine-带有一些自定义过滤器的查询,google-app-engine,objectify,Google App Engine,Objectify,我对外表和客观都很陌生。然而,我需要从数据库中获取一行,从中获取一些值。我试图通过y().load().type(Branch.class).filter(“parent\u Branch\u id”,0).first()获取元素,但结果是FirstRef(null)。但是,当我运行以下循环时: for(Branch b : ofy().load().type(Branch.class).list()) { System.out.println(b.id +". "+b.tree_lab

我对外表和客观都很陌生。然而,我需要从数据库中获取一行,从中获取一些值。我试图通过y().load().type(Branch.class).filter(“parent\u Branch\u id”,0).first()获取元素,但结果是
FirstRef(null)
。但是,当我运行以下循环时:

for(Branch b : ofy().load().type(Branch.class).list()) {
    System.out.println(b.id +". "+b.tree_label+" - parent is " +b.parent_branch_id);
};
我做错了什么

[编辑]
当然,分支是一个数据库实体,如果有关系的话,父分支id是long类型。

如果您需要一个
分支作为请求的结果,我想您错过了一个
.now()


Branch Branch=ofy().load().type(Branch.class).filter(“父分支id”,0).first().now()

听起来您的
父分支id
属性上没有
@Index
注释。当您执行y().load().type(Branch.class).list()
操作时,Objectify有效地执行了按种类获取的批处理(如使用低级API执行
查询(“Branch”)
),因此它不需要属性索引。只要添加一个
过滤器()
,它就会使用一个查询

假设您使用的是Objectify 4,默认情况下不会为属性编制索引。通过向类添加
@index
注释,可以为实体中的所有属性编制索引。提供了有用的信息。

示例来自:

LoadResult th=ofy.load().type(Thing.class).filter(“foo”,foo.first();
Thing th=ofy.load().type(Thing.class).filter(“foo”,foo.first().now();
因此,您需要确保成员“foo”具有@Index,并使用now()获取第一个元素。如果找不到元素,则返回null


可能是
“parent\u branch\u id”
在您的情况下是一个long,在这种情况下,值必须是0L而不是0。

您的循环得到了什么结果?结果只是根据system.out.println:
[long][node\u name]-parent是[long]
您有id为0的父节点吗?这是什么身份证?来自Objecitfy的自动ID?因为在这种情况下,我认为不可能获得0 id…id确实是从objectify自动生成的,但列parent_branch_id指向同一表中的其他记录(它不是必需的,并且充当外键)。是的,此字段中有一条记录为0。请添加分支类的定义;很可能您缺少@Index,或者您有其他错误配置(@Parent on Parent\u branch\u id?也许它不是一个数字?)
找不到symbol-symbol:now()位置:class-Ref
我从未使用过Objectify 4,即使我现在的版本3非常好。你能用一个
.get()
替换
.now()
吗?或者这也是一个错误吗?我现在可以用get替换,但它仍然返回null而不是result,即使有一条记录应该与筛选器匹配…你在你的分支类中有
@Index
编辑过你的
父分支id
字段吗?是的,我想是的。。。在Objectify 4中,默认情况下,所有变量都未编制索引。我想查询一个字段,它必须被索引。@Moby04如果您使用
list()
,而不是
first()
,但保留
filter()
,您会得到预期的结果吗?
LoadResult<Thing> th = ofy.load().type(Thing.class).filter("foo", foo).first();
Thing th =       ofy.load().type(Thing.class).filter("foo", foo).first().now();