2016-10-02 3 views
1

Я использую Grails 3.1.4, и я хочу использовать Hibernate-Search для полнотекстового поиска моих объектов.Hibernate 5 Поиск с Grails 3

В моей build.gradle я включил Hibernate 5 и Hibernate Поиск

compile "org.hibernate:hibernate-core:5.0.9.Final" 
compile "org.hibernate:hibernate-ehcache:5.0.9.Final" 
compile "org.hibernate:hibernate-search-orm" 

Если я добавить @Indexed к одному из моих классов предметной области, я получаю ошибку феллинг:

ERROR org.springframework.boot.SpringApplication - Application startup failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManagerPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is java.lang.NullPointerException 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) 
    at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:207) 
    at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:687) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:523) 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766) 
    at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) 
    at grails.boot.GrailsApp.run(GrailsApp.groovy:55) 
    at grails.boot.GrailsApp.run(GrailsApp.groovy:365) 
    at grails.boot.GrailsApp.run(GrailsApp.groovy:354) 
    at grails.boot.GrailsApp$run.call(Unknown Source) 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133) 
    at com.myapp.Application.main(Application.groovy:8) 

Is есть способ заставить Hibernate Search работать вместе с классами домена Grails?

ответ

1

как совпадение, в настоящее время я переношу старый плагин Grails 2 Hibernate Search для совместимости с Grails 3.1.x и Hibernate 5. Оригинальный автор должен слить мой PR, как только создам его. Я только что закончил разработку, если вы хотите, чтобы дать ему попробовать:

https://github.com/lgrignon/grails-hibernate-search-plugin

EDIT:

Пиар слито, я только что опубликовал в на bintray, который является новым Grails 3 платформа для распространения плагинов. Для того, чтобы попробовать новую версию Grails Hibernate Search 2.0 для Grails 3.1.x/GORM 5: Добавить следующий репозиторий maven { url "http://idcapture.bintray.com/plugins" }

И добавить следующее к зависимостям compile("org.grails.plugins:hibernate-search:2.0")

он должен работать :)

Надеюсь, это поможет!

+0

Awesome ... Я решил пойти с эластичным поиском, но я все еще с нетерпением жду его использования в других проектах. – Tobson

+0

Хорошо. Спасибо :) Я только что начал новую версию плагина, надеюсь, что это поможет другим людям. –

+0

Просто попробовал и, похоже, сработал ... приятная работа :) – Tobson

0

В Grails 3.1.4 уже включает в себя GORM 5 Suite, означает, что следующие строки в файле «build.gradle», вероятно, излишние:

compile "org.hibernate:hibernate-core:5.0.9.Final" 
compile "org.hibernate:hibernate-ehcache:5.0.9.Final" 
compile "org.hibernate:hibernate-search-orm" 

Насколько я знаю, поиск гибернации должен работать отлично подходит для Grails, используя Grails Hibernate search Plugin.

Но если вы уже работаете с Grails 3.1.4, возможно, самым простым способом может быть использование GORM suite (Графическое сопоставление объектов Grails). GORM обеспечивает простой доступ к базе данных, остается четким и понятным для вашего кода.

+0

Но я не могу использовать набор GORM для полнотекстового поиска, не так ли? – Tobson

+0

Я думаю, что ты прав. Посмотрите на следующую ссылку: http://omarello.com/2010/08/grails-full-text-search/ Это может дать вам другой аспект при использовании приложения Grails. – Rotem

+0

Эта статья ссылается на поисковый плагин, который больше не должен использоваться: http://stackoverflow.com/a/33316237/910411, поскольку он основан на проекте Compass, который мертв – Tobson

0

Если вы используете «org.hibernate: hibernate-core: 5.0.9.Final», тогда вам нужно получить совместимую версию Hibernate Search: «org.hibernate: hibernate-search-orm: 5.5.4 .Final».

+0

Вот что я пробовал вскоре после публикации вопроса, но он тоже не сработал. – Tobson

Смежные вопросы