2017-03-25 102 views
0

我有一个使用Hibernate Search的相当直接的Spring Boot 1.5.2应用程序。 JPA的东西工作得很好。使用Hibernate搜索的Spring Boot无法找到org.hibernate.query.ParameterMetadata

我得到所致:抛出java.lang.ClassNotFoundException:运行搜索时org.hibernate.query.ParameterMetadata。

代码看起来有点像这样。用于在Wildfly中运行,但我正在迁移到Spring Boot。

 FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(em); 

    QueryBuilder qb = fullTextEntityManager.getSearchFactory() 
      .buildQueryBuilder() 
      .forEntity(Customer.class) 
      .get(); 

    org.apache.lucene.search.Query 
      luceneQuery = qb.keyword() 
       .wildcard() 
       .onField("primaryParty.firstName") 
       .andField("primaryParty.sureName") 
       .andField("customerNumber") 
       .matching(query.trim() + "*") 
       .createQuery(); 
    javax.persistence.Query jpaQuery = 
      fullTextEntityManager.createFullTextQuery(luceneQuery, Customer.class); 

    List<Customer> result = jpaQuery.getResultList(); 

Hibernate Core 5.0.12通过Spring Boot引入,但类不在那里。

根据这样的:https://cia.sourceforge.io/tattleTaleReport/jar/hibernate-search-orm-5.7.0.Final.jar.html

我应该会发现它在休眠检索用ORM 5.7.0.Final。但从我所看到的这个jar只包含org.hibernate.search包和没有org.hibernate.query包。无法在该jar中的任何其他包中找到该类,但它存在于类路径中的许多其他包中。

是问题

javax.persistence.Query 

如果是这样,改用什么?还是其他地方的问题?

回答

3

Hibernate Search的5.7.0.Finalis only compatible with Hibernate ORM 5.2.3.Final and later。 您应该:

  • 降级休眠搜索以5.6.1.Final
  • 或升级Hibernate的ORM到5.2.3.Final或更高版本。随着春天开机,恐怕你将不得不使用和不稳定版本春天开机,即2.0.0.BUILD-SNAPSHOT

编辑:实际上,它似乎可以使用Hibernate ORM 5.2+和春天启动1.5;见this sample。尽管如此,请注意使用5.2.3.Final或更高版本(样本使用5.2.0.Final,这将不起作用)。


顺便问一下,你所提供的链接,只提到org.hibernate.query因为OSGi的支持,这可能是与你无关。它发生hibernate-search-orm(将Hibernate搜索与Hibernate ORM集成的模块)都导入并重新导出org.hibernate.query包,但它本身不提供。

+0

谢谢,降级:) –

0

我得到了同样的问题,由于使用5.7.0.Final罐子,这是不兼容的。通过更改降级jar版本解决了此问题。

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-search-orm</artifactId> 
    <version>5.6.1.Final</version> 

+0

THX后的作品,现在的作品:) –

相关问题