在Spring数据库中定义查询一致性

在Spring数据库中定义查询一致性,spring,couchbase,n1ql,Spring,Couchbase,N1ql,我尝试建立一个deleteAll函数,该函数删除与给定存储库和类关联的所有文档。为此,我创建了一个自定义N1ql查询。但是我想在以后的数据库操作发生之前更新Couchbase索引。我的猜测是,我必须更改查询的一致性级别才能实现这种行为。 我发现了一些使用CouchbaseTemplate的例子。但是我的模板是空的。谁能告诉我我做错了什么 public void deleteAll() throws DBException { CouchbaseOperations couchbaseTe

我尝试建立一个deleteAll函数,该函数删除与给定存储库和类关联的所有文档。为此,我创建了一个自定义N1ql查询。但是我想在以后的数据库操作发生之前更新Couchbase索引。我的猜测是,我必须更改查询的一致性级别才能实现这种行为。 我发现了一些使用CouchbaseTemplate的例子。但是我的模板是空的。谁能告诉我我做错了什么

public void deleteAll() throws DBException {
    CouchbaseOperations couchbaseTemplate;
    try {
        couchbaseTemplate = templateProvider.resolve(getRepository().getClass(), getClassName().getClass());
    } catch (Exception e) {
        throw  new DBException("Could not get couchbase client", e);
    }

    String statement = String.format("DELETE FROM %s WHERE _class='%s'",
                                     couchbaseTemplate.getCouchbaseBucket().name(), getClassName());

    ScanConsistency consistency = couchbaseTemplate.getDefaultConsistency().n1qlConsistency();
    N1qlParams queryParams = N1qlParams.build().consistency(consistency);
    N1qlQuery query = N1qlQuery.simple(statement, queryParams);
    N1qlQueryResult result = couchbaseTemplate.queryN1QL(query);

    //Result handling
    }
}

templateProvider是自动连接的。

从代码片段中不完全清楚您的存储库和实体。您正在使用哪个版本的SDC

如果您使用的是操作映射bean,那么可以使用

@Repository
public interface MyRepository extends CrudRepository<MyEntity, String> {
}

public class MyService {
@Autowired
MyRepository repo;

@Autowired
RepositoryOperationsMapping templateProvider;
....
CouchbaseOperations operations = templateProvider.resolve(repo.getClass(),MyEntity.class);
@Autowired
CouchbaseTemplate template;