Я пытаюсь создать простой прототип с использованием Spring Boot и Spring Data Couchbase. До сих пор я был заглушен, пытаясь использовать механизм генерации запросов Spring-Data для построения запроса N1QL из имени метода.Spring Boot and Spring Data Couchbase N1QL автогенерированный запрос
Это то, что у меня есть для определения интерфейса моего репозитория, и проблема заключается в строке findBy ....
public interface MetricsRepository extends CrudRepository<Single, String> {
Single save(Single entity);
Single findOne(String id);
List<Single> findByServiceID(long serviceId);
}
Если я исключаю это определение метода, приложение запускается без проблем. Если бы я включил его, боб хранилище не может быть создан из-за следующей ошибки:
Caused by: java.lang.AbstractMethodError: org.springframework.data.couchbase.repository.support.CouchbaseRepositoryFactory$CouchbaseQueryLookupStrategy.resolveQuery(Ljava/lang/reflect/Method;Lorg/springframework/data/repository/core/RepositoryMetadata;Lorg/springframework/data/repository/core/NamedQueries;)Lorg/springframework/data/repository/query/RepositoryQuery;
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.<init>(RepositoryFactorySupport.java:416)
at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:206)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:251)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:237)
at org.springframework.data.couchbase.repository.support.CouchbaseRepositoryFactoryBean.afterPropertiesSet(CouchbaseRepositoryFactoryBean.java:96)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
... 36 more
Если я указать @Query (например: @Query ("# {# n1ql.selectEntity} WHERE роль = . $ 1") я получаю ту же ошибку
Мое определение сущность:.
import com.couchbase.client.java.repository.annotation.Id;
import com.couchbase.client.java.repository.annotation.Field;
import org.springframework.data.couchbase.core.mapping.Document;
@Document
public class Single {
@Id private final String eventID;
@Field private final long serviceID;
@Field private final long metric;
@Field private final long timestamp;
@Field private final long previous;
public Single(String eventID, long serviceID, long metric, long timestamp, long previous) {
this.eventID = eventID;
this.serviceID = serviceID;
this.metric = metric;
this.timestamp = timestamp;
this.previous = previous;
}
public String getEventID() { return eventID; }
public long getServiceID() { return serviceID; }
public long getMetric() { return metric; }
public long getTimestamp() { return timestamp; }
public long getPrevious() { return previous; }
}
Я использую репозиторий через @Autowired аннотацию в контроллере REST у меня есть @Configuration и @EnableCouchbaseRepositories класс конфигурации @ Import-ed в @SpringBootApplication. У меня есть Cou версия сообщества chbase Server 4.0.0, установленная в моем тестовом экземпляре, и если запрос n1ql не существует, я могу подключать и сохранять и извлекать объекты.
Мои зависимости в Gradle:
dependencies {
compile("org.springframework.data:spring-data-couchbase:2.1.1.RELEASE")
compile("org.springframework.boot:spring-boot-starter-web")
compile("org.springframework.boot:spring-boot-starter-actuator")
testCompile("org.springframework.boot:spring-boot-starter-test")
testCompile("junit:junit")
}
'AbstractMethodError' означает, что у вас есть несовместимые банки на пути к классам. Почему вы заставляете версию «data-couchbase»? Какую версию загрузки вы используете? –
Я заставляю версию couchbase, потому что это последняя версия релиза, и это то, как зависимость была указана на странице быстрого запуска проекта data-couchbase. Весенняя версия загрузки - 1.3.3.RELEASE – davdic