【问题标题】:how to check dependency of mongodb/hibernate plugin in my grails project如何在我的 grails 项目中检查 mongodb/hibernate 插件的依赖关系
【发布时间】:2014-05-15 09:09:37
【问题描述】:

最近,我使用 sql 作为主数据库来处理一个 grails 项目。现在,他们想使用 sql 数据库和 mongodb 一样。不幸的是,当我添加 mongodb 插件时,该项目不再工作。

我用一个简单的项目进行了测试,添加了 mongodb 插件就可以了。

在我看来,其他插件和mongodb之间存在一些冲突。那么,如何验证这些依赖问题呢?

我正在使用 grails 2.3.7 并尝试使用 mongodb 3.0.1 编译没有错误,但运行时出现问题。详情如下:

Error Details
Error 500: 
Servlet: gsp
URI: /
Exception Message: grails.orm.HibernateCriteriaBuilder.or(Lgroovy/lang/Closure;)Lorg/grails/datastore/mapping/query/api/Criteria; 
Caused by: Executing action [index] of controller [com.finensemble.IndexController] caused exception: Runtime error executing action 
Class: IndexController 
At Line: [54] 
Code Snippet:
Stack Trace
org.codehaus.groovy.grails.web.servlet.mvc.exceptions.ControllerExecutionException: Executing action [index] of controller [com.finensemble.IndexController]  caused exception: Runtime error executing action

    at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:200)

    at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)

    at com.linkedin.grails.profiler.ProfilerFilter.doFilterInternal(ProfilerFilter.java:82)

    at org.apache.shiro.grails.SavedRequestFilter.doFilter(SavedRequestFilter.java:55)

    at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)

    at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)

    at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)

    at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)

    at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:380)

    at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)

    at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)

    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

    at java.lang.Thread.run(Thread.java:745)

Caused by: org.codehaus.groovy.grails.web.servlet.mvc.exceptions.ControllerExecutionException: Runtime error executing action

    ... 14 more

Caused by: java.lang.reflect.InvocationTargetException

    ... 14 more

Caused by: java.lang.AbstractMethodError: grails.orm.HibernateCriteriaBuilder.or(Lgroovy/lang/Closure;)Lorg/grails/datastore/mapping/query/api/Criteria;

    at com.finansemble.finStore.SaleService$_getActiveSales_closure1.doCall(SaleService.groovy:17)

    at grails.orm.HibernateCriteriaBuilder.invokeClosureNode(HibernateCriteriaBuilder.java:1854)

    at grails.orm.HibernateCriteriaBuilder.invokeMethod(HibernateCriteriaBuilder.java:1553)

    at com.finansemble.finStore.SaleService.getActiveSales(SaleService.groovy:16)

    at com.finansemble.finStore.SaleService.getActiveSales(SaleService.groovy:11)

    at com.finensemble.IndexController$_closure1.doCall(IndexController.groovy:54)

我可以得出结论:hibernate 和 mongodb 依赖于其他一些插件,但版本不同吗?并且休眠没有正确加载?

【问题讨论】:

  • 或许你可以从this similar question的回答中得到帮助。似乎是hibernate和mongodb版本的问题尝试降级到:hibernate:3.6.10.8
  • 实际上,这个问题是从我的项目中的 2.3.4 开始的(当时,hibernate 是较低版本但仍然产生相同的错误)。顺便说一句,您提到的问题已在更高的休眠版本中修复(现在 2.3.7 grails 带有休眠 3.6.10.10)
  • 对不起,我没听懂你说的。你的 grails、hibernate 和 mongodb 版本是什么?降级对您有帮助吗?
  • 对不起,我用hibernate 3.6.10.8测试过,还是一样。我正在使用 grails 2.3.7;休眠 3.6.10.10; MongoDB 3.0.1;

标签: hibernate mongodb grails


【解决方案1】:

运行grails dependency-report 并确保您使用的是最新版本的grails-datastore-* jar。通常要实现这一点,只需升级到hibernatemongodb 的最新版本

【讨论】:

  • 其实我确实跑过grails dependency-report,但是太复杂了,不知道怎么解决!
  • @graeme,我添加了缺少的 repo 并得到了hibernate:3.6.10.14,它仍然与mongo:3.0.1 存在依赖冲突
猜你喜欢
  • 1970-01-01
  • 2012-02-08
  • 2020-11-14
  • 2011-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多