类[]的方法在Grails应用程序之外使用

mal*_*alc 7 grails groovy static-members

以前关于此错误的问题是指hibernate版本问题或运行测试.我认为这不是这种情况.

在Grails服务课程中,我有:

private static User anon = User.findByUsername('anonymous')
Run Code Online (Sandbox Code Playgroud)

这就是创建错误:

Caused by IllegalStateException: Method on class [User] was used outside of a Grails application. If running in the context of a test using the mocking API or bootstrap Grails correctly.
Run Code Online (Sandbox Code Playgroud)

我试图用存储在数据库中的对象实例化私有静态属性,但我必须做一些非常错误的事情.感谢您的任何帮助,建议和指示.

Ian*_*rts 8

这样做是行不通的static,因为它会findByUsername在加载服务时尝试进行调用,这是在GrailsApplication初始化过程完成之前.最早可以可靠地调用GORM方法的是BootStrap,所以我倾向于在这些情况下做的是在服务上创建一个初始化方法,然后从BootStrapinit闭包调用该方法.