类 [] 上的方法在 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 逆向工程师插件进行逆向工程(已经在一个单独的项目上完成了,然后导入到我的项目中。

这是导致 ControllerService 层出现问题的 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 - 使方法全局可用和元类编程

在 grails-app 之外的 Grails 类中注入日志对象

是否可以在 Grails 之外使用 Grails 验证?如何?

使用户/会话信息在 Grails 中的应用程序中可用

在 Grails 中,如何访问域类静态方法中的休眠会话?

如何在 Grails 的控制器之外使用 g.message? [复制]