簡體   English   中英

如何使用帶有@Query 的 spring-data-couchbase 從文檔中返回 boolean

[英]How to return a boolean from a document using spring-data-couchbase with @Query

我正在使用 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 拋出到 Boolean 我相信這是可以接受的。

還有其他簡單的方法嗎? 我相信舊版本的 couchbaseTemplate 中有一個 findByN1QlProjection,但在這個版本中找不到它。 但我寧願不直接使用 couchbasetemplate 或 couchbase sdk 的子文檔 api。

一個類似的舊問題How to fetch a field from document using n1ql with spring-data-couchbase

一種建議的解決方案是專門為需要的字段定義 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);

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM