我正在尝试将我的应用程序迁移到使用Hibernate Search的Spring Boot 2。 启动我的应用时出现错误:
java.lang.NoSuchFieldError: session
java.lang.ClassNotFoundException: org.hibernate.search.jpa.Search
An SPI class of type org.apache.lucene.codecs.Codec with name 'Lucene53' does not exist
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中没有运行。奇怪...
答案 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
我尝试使用更高版本,但是没有用