0

我有一个在 App Engine 标准环境中运行的应用程序,它使用 Google Cloud Tools 和 Datanucleus 框架来访问数据。

当我在本地环境中运行此应用程序时,它可以正常工作,并且当我在 Where 子句中使用 OR 或 IN 进行 Select 时,它会毫无问题地返回表的寄存器。

现在,我想改进我的应用程序并使用 Spring Boot、Spring Cloud GCP 和本地 Cloud Datastore Emulator 创建一个新应用程序。当我尝试对 Datastore Emulator 进行查询时,它可以正常工作,但是当查询具有 IN 或 OR 时,模拟器会记录和错误。

查询是:

@Query(value = "SELECT * FROM  Evento WHERE fincaId = @id_finca AND tipoEvento = 3 OR tipoEvento = 4")

和错误文本:

[datastore] INFORMACI?N: Exception when handling request: INVALID_ARGUMENT: Encountered "OR" at line 1, column 68.
[datastore] Was expecting one of:
[datastore]     <EOF>
[datastore]     "and" ...
[datastore]     "group" ...
[datastore]     "limit" ...
[datastore]     "offset" ...
[datastore]     "order" ...

Datastore Emulator 可以使用 OR 或 IN 子句进行查询吗?

有没有办法以不同的方式做到这一点?

4

1 回答 1

0

数据存储不支持“IN”和“OR”运算符。如果您想拥有这样的功能,您应该发出两个查询并将它们组合在客户端。有关完全支持的查询类型和示例,请查看此文档

于 2020-12-23T08:46:25.650 回答