无法执行 Spring-data Couchbase 查询
Unable to execute Spring-data Couchbase query
我有一个 spring-data couchbase 存储库。我正在尝试通过 @Query 注释使用 n1ql 查询来查询数据库。我实现的基本存储库如下所示:
public interface CouchBaseRepository extends PagingAndSortingRepository<GsJsonStore, Long> {
@Query("SELECT * FROM default WHERE ?0 = ?1")
public Page<GsJsonStore> matchJson(String term, String value, Pageable pageable);�
}�
当我尝试使用此方法查询时出现错误:
Unable to execute the query due to the following errors:
{"msg":"syntax error - at 0","code":3000}
我做错了什么吗?
正在替换“?”使用“$”解决了问题。
内联查询的语法很简单 N1QL
,它使用 $
而不是 ?
。
但是 请注意,@Query
使用手工查询并不总是最好的主意,因为它有写一个的注意事项。
为了正确解组实体,查询还应该提取一些元数据:文档的 ID(成为实体的 @Id
)和 CAS(成为实体的 @Version
)...
此外,由于在 Couchbase 中任何类型的数据都可以混合在同一个后备桶中,因此查询应始终根据正确的 _class
属性进行过滤。
因此最好使用实用程序 SpEL 重写您的查询,以便将所有这些考虑在内:
@Query("#n1ql.selectEntity WHERE [=10=] = AND #n1ql.filter")
selectEntity
将被适当的“SELECT default.*, META(default).ID AS id, META(default).CAS AS cas FROM default
”替换。
同样,filter
将被适当的 where 子句“_class = 'com.packege.here.GsJsonStore'
”替换。
我有一个 spring-data couchbase 存储库。我正在尝试通过 @Query 注释使用 n1ql 查询来查询数据库。我实现的基本存储库如下所示:
public interface CouchBaseRepository extends PagingAndSortingRepository<GsJsonStore, Long> {
@Query("SELECT * FROM default WHERE ?0 = ?1")
public Page<GsJsonStore> matchJson(String term, String value, Pageable pageable);�
}�
当我尝试使用此方法查询时出现错误:
Unable to execute the query due to the following errors:
{"msg":"syntax error - at 0","code":3000}
我做错了什么吗?
正在替换“?”使用“$”解决了问题。
内联查询的语法很简单 N1QL
,它使用 $
而不是 ?
。
但是 请注意,@Query
使用手工查询并不总是最好的主意,因为它有写一个的注意事项。
为了正确解组实体,查询还应该提取一些元数据:文档的 ID(成为实体的 @Id
)和 CAS(成为实体的 @Version
)...
此外,由于在 Couchbase 中任何类型的数据都可以混合在同一个后备桶中,因此查询应始终根据正确的 _class
属性进行过滤。
因此最好使用实用程序 SpEL 重写您的查询,以便将所有这些考虑在内:
@Query("#n1ql.selectEntity WHERE [=10=] = AND #n1ql.filter")
selectEntity
将被适当的“SELECT default.*, META(default).ID AS id, META(default).CAS AS cas FROM default
”替换。
同样,filter
将被适当的 where 子句“_class = 'com.packege.here.GsJsonStore'
”替换。