2017-02-21 13 views
0

Я пытаюсь установить функцию deleteAll, которая удаляет все документы, связанные с данным репозиторием и классом. Для этого я создал пользовательский запрос N1ql. Но я хочу, чтобы индекс Couchbase обновлялся до того, как последуют операции с базой данных. Я предполагаю, что мне нужно изменить уровень согласованности запроса для достижения такого поведения. Here и here Я нашел несколько примеров, которые делают это с помощью CouchbaseTemplate. Но мой шаблон равен null. Может ли кто-нибудь сказать мне, что я делаю неправильно?Определение согласованности запросов в Spring Data Couchbase

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 автосервис.

ответ

1

Непонятно о вашем репозитории и сущности из фрагмента кода. Какую версию SDC вы используете?

Если вы используете операцию отображения боб, вы получите базовый шаблон couchbase для конкретного репозитария и объекта с использованием

@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); 

Убедитесь, что включить couchbase репозиториев с @EnableCouchbaseRepositories. Если в ваших репозиториях используется только couchbase, вы также можете напрямую получить фасонный компонент couchbase.

@Autowired 
CouchbaseTemplate template; 
Смежные вопросы