Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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
Java 在嵌入的引用列表中进行对象化查询_Java_Google App Engine_Google Cloud Datastore_Nosql - Fatal编程技术网

Java 在嵌入的引用列表中进行对象化查询

Java 在嵌入的引用列表中进行对象化查询,java,google-app-engine,google-cloud-datastore,nosql,Java,Google App Engine,Google Cloud Datastore,Nosql,在我的数据存储中,我有一个post实体,它有一个发送者,这个发送者有一个位置列表。基本上,这看起来是这样的: @Entity @Cache @Unindex @Searchable public class Post { @Index @Load(WithSender.class) @NonNull @Getter @Setter protected Ref<User> sender; @Index @Getter prot

在我的数据存储中,我有一个post实体,它有一个发送者,这个发送者有一个位置列表。基本上,这看起来是这样的:

@Entity
@Cache
@Unindex
@Searchable
public class Post {
    @Index
    @Load(WithSender.class)
    @NonNull @Getter @Setter
    protected Ref<User> sender;


    @Index
    @Getter
    protected long creation;
}

@Entity
@Cache
@Unindex
public class User {

    @Index
    @NotNull
    @Email
    @NonNull
    @Getter
    @Setter
    private String email;

    @Size(max = 50)
    @Getter
    @Setter
    private String firstName;

    @Size(max = 50)
    @Getter
    @Setter
    private String lastName;

    @Index
    @Setter
    @Getter
    protected List<Key<Region>> regions;
}
query = query.filter("sender.regions", "key").order("-creation");
当我第一次执行查询时,AppEngine要求我创建以下索引:

query = query.filter("sender.regions", "key").order("-creation");
<datastore-index kind="Post" ancestor="false" source="manual">
    <property name="sender.regions" direction="asc"/>
    <property name="creation" direction="desc"/>
</datastore-index>


但是结果仍然是毫无希望的空。。。如果有人有什么建议,我很高兴。谢谢

要按“发件人.地区”查询帖子,应嵌入发件人实体

query = query.filter("sender.regions", "key").order("-creation");
数据存储中没有类似SQL的“连接”。您可以将发件人嵌入到帖子中,或者先按区域查询发件人密钥,然后使用这些发件人密钥查询帖子

query = query.filter("sender.regions", "key").order("-creation");

希望有帮助。

谢谢。事实上,我最后做的是在帖子中嵌入区域。我在其他几个上下文中都需要它,所以在创建时,我会在帖子中复制发件人的区域,这样我所有的麻烦都结束了!:)所以你最终嵌入了属性,为什么这个答案不被接受?
query = query.filter("sender.regions", "key").order("-creation");