问题描述
@Data
@Entity(name = APPLICATION_KIND)
public class ApplicationEntity {
@Id
private String Id;
private String appId;
private String name;
private String status;
}
我想按appIds
的列表进行查找。但是,似乎数据存储区没有提供这种可能性。
DatastoreTemplate
仅提供一种可能性-findAllById
,但不适用于其他字段或其他过滤器(例如按状态)。
不幸的是,StructuredQuery.PropertyFilter
也没有提供这种可能性。
StructuredQuery.CompositeFilter
只有and
,却没有or
和in
。
可能有人遇到相同的问题并以某种方式解决该问题?
解决方法
您可以将StructuredQuery.PropertyFilter
中的每个属性列表作为数组传递;您可以点击以下链接:https://cloud.google.com/datastore/docs/concepts/queries#array_values
然后,对于OR
和IN
,您可以编写GQL查询并执行如下查询:
SELECT * FROM analysis WHERE concepts CONTAINS concept;
在这里,分析实体包含一个概念列表。
, 数据存储区实际上支持IN运算符,但不支持OR。有关更多信息,请参阅this documentation。
您实际上可以执行以下操作:
SELECT * FROM APPS WHERE appId IN (abc,xyz,...)