-1

我正在寻找如何通过属性列表在数据存储中查询的方法。

所以,我有一个简单的实体:

@Data
@Entity(name = APPLICATION_KIND)
public class ApplicationEntity {

    @Id
    private String Id;

    private String appId;

    private String name;

    private String status;
}

我想通过列表进行查找appIds。但是,似乎 Datastore 不提供这种可能性。

DatastoreTemplate仅提供一种可能性 -findAllById但它既不适用于其他字段,也不适用于其他过滤器(例如按状态)。

不幸的是,StructuredQuery.PropertyFilter也不提供这种可能性。 StructuredQuery.CompositeFilter有 onlyand但没有既没有or也没有in

可能有人面临同样的问题并以某种方式解决它?

4

2 回答 2

0

您可以将每个属性列表StructuredQuery.PropertyFilter作为数组传递;您可以点击此链接:https ://cloud.google.com/datastore/docs/concepts/queries#array_values

而且,ORIN可以编写一个 GQL 查询并像这样执行查询:

SELECT * FROM analysis WHERE concepts CONTAINS concept;

在这里,分析实体包含一个概念列表。

于 2020-11-12T06:01:38.523 回答
0

数据存储区实际上支持 IN 运算符,但 OR 不支持。请参阅此文档以获取更多信息。

您实际上可以执行以下操作:

SELECT * FROM APPS WHERE appId IN (abc, xyz, ...)

于 2020-11-16T14:52:06.993 回答