我使用的是spring-data-couchbase 4.1.1。我想在我的存储库方法中添加一个方法,如下所示
public interface DomainRepository extends CouchbaseRepository<Domain, String> {
@Query(("SELECT isActive from #{#n1ql.bucket} "
+ "WHERE META().id = " + "\"#{#id}\" "))
Boolean isActive(@Param("id") String id);
}但它将域的ClassCastException抛出为布尔值,我认为这是可以接受的。
有没有其他简单的方法呢?我相信在旧版本的couchbaseTemplate中有一个findByN1QlProjection,但在这个版本中找不到它。但是我不想直接使用couchbasetemplate或者couchbase sdk的子文档apis。
一个类似的老问题How to fetch a field from document using n1ql with spring-data-couchbase
发布于 2021-03-04 17:49:13
一种建议的解决方案是专门为需要的字段定义DTO及其存储库。
class IsActiveDTO {
private isActive;
// constructor, getters, and setters
}并定义它的存储库
public interface IsActiveDTORepository extends CouchbaseRepository<IsActiveDTO, String> {
@Query(("SELECT isActive from #{#n1ql.bucket} "
+ "WHERE META().id = " + "\"#{#id}\" "))
IsActiveDTO isActive(@Param("id") String id);
}https://stackoverflow.com/questions/66457348
复制相似问题