Szy*_*iak 7 grails hibernate searchable
最近我将一个简单的Grails应用程序与Searchable插件集成在一起.我发现Searchable插件不能与Hibernate 4库一起使用.
在这里你可以找到一个示例应用程序,它只包含干净的Grails 2.4应用程序,只添加了可搜索的插件 - https://github.com/wololock/grails-searchable-example
当我运行此应用程序时:
runtime ":hibernate4:4.3.5.5"
Run Code Online (Sandbox Code Playgroud)
依赖,它不会启动并抛出异常:
ClassNotFoundException: org.hibernate.impl.SessionFactoryImpl
Run Code Online (Sandbox Code Playgroud)
我已经发现已经在Hibernate4中将SessionFactoryImpl移动到org.hibernate.internal包中,看起来Compass在旧位置查找此类:
2014-10-11 19:41:58,142 [localhost-startStop-1] ERROR context.GrailsContextLoaderListener - Error initializing the application: org/hibernate/impl/SessionFactoryImpl
Message: org/hibernate/impl/SessionFactoryImpl
Line | Method
->> 95 | injectLifecycle in org.compass.gps.device.hibernate.lifecycle.DefaultHibernateEntityLifecycleInjector
Run Code Online (Sandbox Code Playgroud)
切换回:
runtime ":hibernate:3.6.10.17"
Run Code Online (Sandbox Code Playgroud)
和改变
cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
Run Code Online (Sandbox Code Playgroud)
在DataSource.groovy解决了这个问题.
我的问题是:在Hibernate 4中使用Searchable插件是否有任何解决方法,或者我们必须等待或解决Compass/Searchable源代码中的问题?您是如何在Grails应用程序中处理该问题的?我将非常感谢您的提示.
Bur*_*ith 10
在Hiberate 3.x和4.x之间有几个包和类名更改,因此使用Hibernate 3.x的代码将无法与4.x一起使用,除非在极少数情况下.除了名称更改之外,事物的工作方式也发生了很大的内部变化,因此编译的代码不一定会运行.应用程序选项#1将降级为Hibernate 3.x. 其中的配置设置包含并注释掉(BuildConfig.groovy,DataSource.groovy),因此这是一个非常快速的选项.如果你依赖于4.x中添加的功能,显然不是一个选项,这只会延迟真正的问题,直到你必须升级Hibernate.
使用Hibernate 3所需要的所有插件进行更新,以支持休眠4,无论是作为替代,或理想,同时支持使用一些交叉编译的技巧或其他3 届党库.假设用户最终将从3.x升级的一个插件选项是创建一个3.x分支并为Hibernate 4启动插件的新主要修订(在主分支中)并进行更改以使其在4中工作. X.使用3.x分支来支持安全更新和非常小的问题,但不要添加新功能.许多插件作者可能会走这条路.
在某些情况下,另一种选择最有意义 - 不做任何事情.这适用于Searchable.Searchable使用的http://www.compass-project.org/实际上已经死了 - 它的最后一次发布是在4年前发布的.Shay Banon现在是http://www.elasticsearch.org/的首席技术官.我相信Shay停止了Compass的工作,并开始使用Elasticsearch,因为将Compass扩展到单个服务器之外是不切实际的.可以将Lucene索引存储在数据库中,但是虽然这确实为您提供了集中式单个写入器和一个或多个(使用数据库集群或类似)集中式读取器,但是具有自定义协议的优化搜索服务器等等.更有意义.
Solr的共识似乎也是Elasticsearch的首选.Solr Grails插件在3年内没有更新,Elasticsearch插件也变得发霉了,但最近Noam Tenne接替了插件的领导并完成了很多伟大的工作,他在过去的几个月里完成了几次发布.请注意,旧的elasticsearch
和elasticsearch-gorm
插件已合并并更新以创建新elasticsearch
插件.
另一种选择是使用Hibernate自己的产品Hibernate Search.有一个插件,但它自2012年以来没有更新.自私这是我个人喜欢你 - 选择此选项,接管插件(假设肯定的答复或原作者没有回应)并更新它兼容使用最新的Hibernate 4.x插件.这将为我们提供Elasticsearch的良好替代品.
除此之外,我认为Elasticsearch是您的最佳选择.
归档时间: |
|
查看次数: |
1819 次 |
最近记录: |