Spring Boot 2休眠搜索

时间:2018-07-23 22:40:01

标签: spring hibernate spring-boot hibernate-search

我正在尝试将我的应用程序迁移到使用Hibernate Search的Spring Boot 2。 启动我的应用时出现错误:

  • 使用 5.5.x.Final java.lang.NoSuchFieldError: session
  • 使用 5.6.x.Final 5.8.x.Final java.lang.ClassNotFoundException: org.hibernate.search.jpa.Search
  • 使用 5.7.x.Final 5.9.x.Final An SPI class of type org.apache.lucene.codecs.Codec with name 'Lucene53' does not exist
  • 使用 5.10.x.Final NoClassDefFoundError: org/hibernate/resource/beans/spi/ManagedBeanRegistry

有关信息,当前的Spring Boot 2.0.3.RELEASE版本在5.2.4.Final中使用Hibernate核心依赖项

任何想法,要使用哪个版本?

在Guillaume回答后以及对工作区和索引进行了彻底清理之后进行更新

使用5.9版本,异常已演变为No transactional EntityManager available

最终词

通过在方法上添加@Transactional修复了最后一个错误,但该错误在Spring Boot 1中没有运行。奇怪...

2 个答案:

答案 0 :(得分:5)

您应使用的版本取决于所用ORM的版本。检查您的依赖性。

请参阅以下兼容性列表:http://hibernate.org/search/releases/#compatibility-matrix

如果您使用的是Spring Boot 2.0.3的默认依赖项,那么ORM的版本应为5.2.17.Final,因此应使用Search 5.9。

您还需要使用Lucene 5.5.x,因此,如果您来自旧的Lucene版本,则可能必须升级Lucene。

答案 1 :(得分:0)

我试图做同样的事情,并且在此存储库中有以下结果(工作)

https://github.com/jcangh/boot-hibernate-search

  • 春季启动版本2.0.9
  • 休眠搜索orm 5.7.3.Final

我尝试使用更高版本,但是没有用