JPA и Hibernate Search, java.lang.NoSuchMethodError - PullRequest
0 голосов
/ 10 января 2019

У меня есть проект, который был изначально построен с использованием Spring JPA и Hibernate. Мне нужно внедрить Hibernate Search, и я считаю, что у меня есть проблемы с зависимостями.

Мой pom.xml

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.10.RELEASE</version>
    <relativePath/>
</parent>

    <!-- JPA -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- Hibernate -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.4.0.Final</version>
    </dependency>

    <!-- Hibernate Search -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-search-orm</artifactId>
        <version>5.7.0.Final</version>
    </dependency>

Индексирование Hibernate Search работает нормально. Я запускаю этот код, и он работает:

FullTextEntityManager fullTextEntityManager =
        Search.getFullTextEntityManager(entityManager);
fullTextEntityManager.createIndexer().startAndWait();

Ошибка возникает, когда я запускаю запрос как следующий:

    FullTextEntityManager fullTextEntityManager
            = Search.getFullTextEntityManager(entityManager);

    QueryBuilder queryBuilder = fullTextEntityManager.getSearchFactory()
            .buildQueryBuilder()
            .forEntity(Speaker.class)
            .get();

    org.apache.lucene.search.Query query = queryBuilder
            .keyword()
            .onFields("firstName", "lastName", "biography")
            .matching(criteria)
            .createQuery();

    org.hibernate.search.jpa.FullTextQuery jpaQuery
            = fullTextEntityManager.createFullTextQuery(query, Speaker.class);

Исключение, которое я получаю, следующее:

java.lang.NoSuchMethodError: org.hibernate.query.internal.ParameterMetadataImpl.<init>([Lorg/hibernate/engine/query/spi/OrdinalParameterDescriptor;Ljava/util/Map;)V
    at org.hibernate.search.impl.FullTextSessionImpl.createFullTextQuery(FullTextSessionImpl.java:86) ~[hibernate-search-orm-5.7.0.Final.jar:5.7.0.Final]
    at org.hibernate.search.impl.FullTextSessionImpl.createFullTextQuery(FullTextSessionImpl.java:75) ~[hibernate-search-orm-5.7.0.Final.jar:5.7.0.Final]
    at org.hibernate.search.jpa.impl.FullTextEntityManagerImpl.createFullTextQuery(FullTextEntityManagerImpl.java:97) ~[hibernate-search-orm-5.7.0.Final.jar:5.7.0.Final]

Есть ли проблема совместимости между Hibernate 5.4.0.Final, Hibernate Search 5.7.0.Final и JPA?

1 Ответ

0 голосов
/ 25 марта 2019

Из списка совместимости для hibernate 5.4 вам потребуется hibernate-search-orm 5.11, см. http://hibernate.org/search/releases/5.11/

С уважением Люк

...