【发布时间】: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;