JPA和Hibernate Search,java.lang.NoSuchMethodError

时间:2019-01-10 12:10:00

标签: java hibernate spring-data-jpa

我有一个最初使用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 :(得分:0)

从hibernate 5.4的兼容性列表中,您需要hibernate-search-orm 5.11参见http://hibernate.org/search/releases/5.11/

问候 卢克