类 [] 上的方法在 Grails 应用程序之外使用。如果在使用模拟 API 或引导 Grails 的测试上下文中正确运行
Posted
技术标签:
【中文标题】类 [] 上的方法在 Grails 应用程序之外使用。如果在使用模拟 API 或引导 Grails 的测试上下文中正确运行【英文标题】:Method on class [] was used outside of a Grails application. If running in the context of a test using the mocking API or bootstrap Grails Correctly 【发布时间】:2014-01-14 05:09:15 【问题描述】:问题
我知道这方面已经存在一个问题,但我认为导致的问题可能会根据他们所说的有所不同。我有以下设置:
-
grails 版本: 2.3.4
Hibernate 插件: 运行时 ":hibernate:3.6.10.6"
我的 Bootstrap 是空的
我的控制器和服务测试已注释
这个 grails 应用程序有多个数据源(我不确定这个事实是否与它有关)并且它发生在调用来自第二个数据源的域对象之后,该数据源已使用 grails 逆向工程师插件进行逆向工程(已经在一个单独的项目上完成了,然后导入到我的项目中。
这是导致 Controller 和 Service 层出现问题的 GORM 调用
def campusAttributes = CampusAttribute.findAllByNameLike("%Next Option%")
我发现了一些其他的抱怨,这似乎是 Maven 和 grails hibernate 插件版本的问题,但在那种情况下,这个问题对于 grails 2.3.1 和特定的 hibernate 插件版本非常特殊。
我所做的只是一个 grails run-app(没有使用 maven 构建应用,也没有任何模拟)
提前致谢
【问题讨论】:
【参考方案1】:我在将 grails 项目从 2.2.4 升级到 2.3.6 时遇到了同样的问题。我已将休眠插件从 3.6.10 升级到 3.6.10.8,错误消失了。
【讨论】:
我遇到了 3.6.10.18 休眠版本的问题。我的 grails 版本是 2.3.8 如果你在mysql中使用保留字也会出现这个错误。 dev.mysql.com/doc/refman/5.5/en/keywords.html【参考方案2】:从 grails 2.3.0 升级到 2.3.5 后,我添加了相同的错误。 在我的情况下解决它的方法是修改 BuildConfig.groovy 中的插件依赖项,以便将 hibernate 和 tomcat 设置为 2.3.5 所需的级别: *新的tomcat:构建':tomcat:7.0.50'(旧的:构建“:tomcat:7.0.42)。 *新的休眠:运行时“:休眠:3.6.10.7”(旧:运行时“:休眠:3.6.10.1”)。
【讨论】:
【参考方案3】:我在移动域类的包时遇到了同样的问题,例如它原来是
com.a.DomainClass 但我把它移到 com.b.DomainClass
我还没有清理项目
【讨论】:
以上是关于类 [] 上的方法在 Grails 应用程序之外使用。如果在使用模拟 API 或引导 Grails 的测试上下文中正确运行的主要内容,如果未能解决你的问题,请参考以下文章
在 grails-app 之外的 Grails 类中注入日志对象