【发布时间】:2020-05-23 12:02:28
【问题描述】:
我正在尝试将数值添加到参数化的AnalyticsQuery,但在查询运行时不断出现错误。创建查询的 java 如下所示:
private ParameterizedAnalyticsQuery aggregateQuery(String userId, Long from, Long to) {
return AnalyticsQuery.parameterized(
"select d.field1,"
+ " d.field2"
+ " from data d"
+ " where d.userId = $userId"
+ " and d.timestamp between $from and $to",
JsonObject.create()
.put("userId", userId)
.put("from", from)
.put("to", to)
);
}
运行查询时返回以下错误:
<< Encountered \"from\" at column 213. ","code":24000}]
如果我将查询更改为以下内容,则它可以工作并返回行:
return AnalyticsQuery.parameterized(
"select d.field1,"
+ " d.field2"
+ " from data d"
+ " where d.userId = $userId"
+ " and d.timestamp between " + from
+ " and " + to,
JsonObject.create()
.put("userId", userId)
);
为什么参数不是Strings时会出现问题?有没有办法使用带有数值的参数化查询?
【问题讨论】:
-
我也刚刚在 .NET 中尝试过。我的猜测是 between/and 要么无法参数化(还),要么存在错误。
-
我自己试试,我会尽快回复你的
标签: java couchbase couchbase-java-api