如何解决如何使用带有@Query 的 spring-data-couchbase 从文档中返回布尔值
我使用的是 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 for Domain to 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);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。