grails 3.2.6未能初始化测试数据;不是域类或GORM未正确初始化;

grails 3.2.6未能初始化测试数据;不是域类或GORM未正确初始化;,grails,gorm,Grails,Gorm,我用最新的v3.2.6创建了一个简单的grails应用程序。在grails app/domain中创建了作者和书籍类 grails应用程序/域中的book类如下所示(我还有一个books类) 和book域类的完整性 package org.softwood class Book { String title Author author //static belongsTo = [author:Author] static constraints = {

我用最新的v3.2.6创建了一个简单的grails应用程序。在grails app/domain中创建了作者和书籍类

grails应用程序/域中的book类如下所示(我还有一个books类)

和book域类的完整性

package org.softwood

class Book {

    String title
    Author author

    //static belongsTo = [author:Author]

    static constraints = {
        author nullable:true
    }
}
我启动了app-no-errors,并尝试使用grails控制台创建Author的实例,得到了如下错误

java.lang.IllegalStateException: Either class [org.softwood.Author] is not a domain class or GORM has not been initialized correctly or has already been shutdown. Ensure GORM is loaded and configured correctly before calling any methods on a GORM entity.
所以我编辑了BootStrap.groovy,试图在启动时创建一个类似这样的程序。为什么它没有正确地提到Gorm

import org.softwood.*

class BootStrap {

    def init = { servletContext ->
        environments {
            development{
                createDevData()
            }
            test {}
            production {}
        }
    }
    def destroy = {
    }

    def createDevData() {
        Author a = new Author(name:"will")
        def res = a.save (flush:true, failOnExit:true)
        assert res
        assert Author.get(1).name == "will"
    }
}
当我用相同的消息启动应用程序时会出现此错误,堆栈跟踪如下

java.lang.IllegalStateException: Either class [org.softwood.Author] is not a domain class or GORM has not been initialized correctly or has already been shutdown. Ensure GORM is loaded and configured correctly before calling any methods on a GORM entity.
    at org.grails.datastore.gorm.GormEnhancer.stateException(GormEnhancer.groovy:387)
    at org.grails.datastore.gorm.GormEnhancer.findInstanceApi(GormEnhancer.groovy:273)
    at org.grails.datastore.gorm.GormEnhancer.findInstanceApi(GormEnhancer.groovy:270)
    at org.grails.datastore.gorm.GormEntity$Trait$Helper.currentGormInstanceApi(GormEntity.groovy:1326)
    at org.grails.datastore.gorm.GormEntity$Trait$Helper.save(GormEntity.groovy:151)
    at org.grails.datastore.gorm.GormEntity$Trait$Helper$save.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133)
    at org.softwood.Author.save(Author.groovy)
    at org.softwood.Author.save(Author.groovy)
    at org.grails.datastore.gorm.GormEntity$save.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
    at test.BootStrap.createDevData(BootStrap.groovy:21)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
    at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:384)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:158)
    at test.BootStrap$_closure1$_closure3$_closure4.doCall(BootStrap.groovy:10)
    at test.BootStrap$_closure1$_closure3$_closure4.doCall(BootStrap.groovy)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
    at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024)
    at groovy.lang.Closure.call(Closure.java:414)
    at groovy.lang.Closure.call(Closure.java:408)
    at grails.util.Environment$EnvironmentBlockEvaluator.execute(Environment.java:529)
    at grails.util.Environment.executeForEnvironment(Environment.java:510)
    at grails.util.Environment.executeForCurrentEnvironment(Environment.java:485)
    at org.grails.web.servlet.boostrap.DefaultGrailsBootstrapClass.callInit(DefaultGrailsBootstrapClass.java:62)
    at org.grails.web.servlet.context.GrailsConfigUtils.executeGrailsBootstraps(GrailsConfigUtils.java:65)
    at org.grails.plugins.web.servlet.context.BootStrapClassRunner.onStartup(BootStrapClassRunner.groovy:53)
    at grails.boot.config.GrailsApplicationPostProcessor.onApplicationEvent(GrailsApplicationPostProcessor.groovy:256)
    at grails.boot.config.GrailsApplicationPostProcessor.onApplicationEvent(GrailsApplicationPostProcessor.groovy)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:167)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:383)
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:337)
    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:882)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:144)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:545)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:762)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:372)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:316)
    at grails.boot.GrailsApp.run(GrailsApp.groovy:83)
    at grails.boot.GrailsApp.run(GrailsApp.groovy:388)
    at grails.boot.GrailsApp.run(GrailsApp.groovy:375)
    at grails.boot.GrailsApp$run.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133)
    at test.Application.main(Application.groovy:8)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
试试这个

package org.softwood

//Author has many books logical model

class Author {

    String name
    //Collection books

    static hasMany = [books:Book]

    static constraints = {
        books nullable:true    // you may not need this.
    }
}
试试这个

package org.softwood

//Author has many books logical model

class Author {

    String name
    //Collection books

    static hasMany = [books:Book]

    static constraints = {
        books nullable:true    // you may not need this.
    }
}

奇怪的小精灵。在等待时-因损坏而报废,并再次重新创建一个全新的应用程序。重新创建作者/书籍片段并作为集成测试重新运行-它工作了,转到控制台并在交互式控制台上键入-它工作了。所以我不知道为什么以前的新安装不起作用,但显然坏了。非常奇怪的是,您的域类与您的
应用程序
类在同一个包中吗?如果不是,您可能需要覆盖
packageNames()
no-graeme它们不是-默认应用程序groovy在包“package coffeeshopapp”中-与项目相同。域类位于“package org.softwood”中。正如我提到的,在intellij中进行渐变清理似乎再次修复了问题——从命令行运行应用程序也是如此。你说的覆盖“packageNames()”是什么意思?我不知道你说的是什么意思。在等待时-因损坏而报废,并再次重新创建一个全新的应用程序。重新创建作者/书籍片段并作为集成测试重新运行-它工作了,转到控制台并在交互式控制台上键入-它工作了。所以我不知道为什么以前的新安装不起作用,但显然坏了。非常奇怪的是,您的域类与您的
应用程序
类在同一个包中吗?如果不是,您可能需要覆盖
packageNames()
no-graeme它们不是-默认应用程序groovy在包“package coffeeshopapp”中-与项目相同。域类位于“package org.softwood”中。正如我提到的,在intellij中进行渐变清理似乎再次修复了问题——从命令行运行应用程序也是如此。重写“packageNames()”是什么意思?我不知道你的意思,它看起来不像是grails——当我在命令行上使用run app时,它工作得很好,当我尝试intellij内部的gradle clean时,它又开始工作了。这似乎是intellij失步和新一代停止正常工作的问题。运行clean操作有点像是在它上面-但不应该真的发生我不认为它看起来不像grails-当我在命令行上使用run应用程序时,它工作得很好,当我尝试intellij内部的gradle clean时,它又开始工作了。这似乎是intellij失步和新一代停止正常工作的问题。运行干净的动作有点像是在控制它,但我不认为真的应该发生