我正在尝试使用参数化的N1QL查询,但它没有识别json占位符并且抛出了错误的语法异常。
代码:
public static final String LMR_DETAILS
= "SELECT * FROM $bucketName WHERE lmr.lmrStatusDescriptionTe ='PENDING'and STR_TO_MILLIS(lmr.recordExpirationTs) BETWEEN STR_TO_MILLIS($startTime) AND STR_TO_MILLIS($endTime)";
String bucketName = bucket.bucketManager().info().name();
JsonObject placeHolders = JsonObject.create().put("bucketName", bucketName).put("startTime", reqDates[0]).put("endTime", reqDates[1]);
N1qlQuery query = N1qlQuery.parameterized(QueryString.LMR_DETAILS, placeHolders);
N1qlQueryResult result = bucket.query(query);
答案 0 :(得分:0)
FROM子句要求作为静态标识符引用桶或子查询,它不能是参数化变量。将$ bucketName作为参数化变量删除,并通过动态构造LMR_DETAILS替换为实际存储桶名称。