spring data elasticsearch Не удалось вызвать метод инициализации; вложенным исключением является java.lang.AbstractMethodError

У меня проблема с Spring Data Elasticsearch. Я настраиваю elasticsearch следующим образом:

@Configuration
@EnableJpaRepositories(basePackages = {"org.project.repositories"})
@EnableElasticsearchRepositories(basePackages = "org.project.repositorieselastic")
@EnableTransactionManagement
public class PersistenceContext {
@Bean
public ElasticsearchOperations elasticsearchTemplate() {
    return new ElasticsearchTemplate(client());
}

@Bean
public Client client(){

    Settings settings = ImmutableSettings.settingsBuilder()
        // Setting "transport.type" enables this module:
        .put("cluster.name", "elasticsearch")
        .put("client.transport.ignore_cluster_name", false)
        .build();


    TransportClient client= new TransportClient(settings);
    TransportAddress address = new InetSocketTransportAddress("127.0.0.1", 9300);
    client.addTransportAddress(address);
    return client;
}

}

Мой репозиторий выглядит так.

@Repository()
public interface UserFavoriteElasticRepo extends ElasticsearchRepository<UserFavorite, Long> {

}

Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: org.project.repositorieselastic.UserFavoriteElasticRepo org.project.services.elastic.FavoriteIndexerService.elasticRepo; nested exception
is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userFavoriteElasticRepo': Invocation of init method failed; nested exception is java.lang.AbstractMethodError

Похоже, реализация не сгенерирована. Но я не знаю, где исследовать. Я пытался использовать один пакет и использовать этот - https://github.com/izeye/spring-boot-throwaway-branches/commit/874ccba09189d6ef897bc430c43b6e3705404399, но безуспешно.


person Mila    schedule 17.03.2016    source источник


Ответы (2)


Я решил проблему, добавив это в файл pom

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-commons</artifactId>
    <version>1.12.2.RELEASE</version>
</dependency>
person Pierpaolo Pagnoni    schedule 13.01.2017

У меня такое же исключение с использованием spring-data-elasticsearch. Но было выброшено исключение, когда я объявил новые методы в репозитории: например:

public interface UserFavoriteElasticRepo extends ElasticsearchRepository<UserFavorite, Long> {
Page<UserFavorite> findBySomeProperty(String propertyValue, Pageable pageable);

}

Это произошло из-за версий spring-data-elasticsearch, spring-data-commons. Объявления функций изменились: org.springframework.data.repository.query.QueryLookupStrategy.resolveQuery — это вызвало исключение. Для spring-data-elasticsearch версии 2.0.0.RELEASE вы должны использовать spring-data-commons с версией 1.12.0.
Если в вашем проекте есть spring-data-jpa, он также использует spring-data-commons. Для spring-data-jpa v1.9.0.RELEASE Spring-data-commons имеет значение v1.11.0.RELEASE.

Не могли бы вы указать, какие фреймворки и версии Spring вы используете? Также, если бы вы могли поместить всю трассировку стека, это было бы полезно?

person Bartosz Wardziński    schedule 13.05.2016