2017-02-13 4 views
1

Ich habe eine einfache Grails App mit der neuesten v3.2.6 erstellt. erstellt eine Autoren- und Buchklasse in grails-app/domain.Grails 3.2.6 kann Testdaten nicht initialisieren "ist keine Domänenklasse oder GORM wurde nicht korrekt initialisiert"

Buch Klasse in Grails-app/Domain sieht wie folgt aus (ich habe eine Bücher-Klasse auch)

package org.softwood 

//Author has many books logical model 

class Author { 

    String name 
    Collection books 

    //static hasMany = [books:Book] 

    static constraints = { 
     books nullable:true 
    } 
} 

und Buch Domain-Klasse für Vollständigkeit

package org.softwood 

class Book { 

    String title 
    Author author 

    //static belongsTo = [author:Author] 

    static constraints = { 
     author nullable:true 
    } 
} 

I App gestartet - ohne Fehler und versucht, Grails-Konsole zu verwenden, um eine Instanz von Autor zu erstellen und einen Fehler wie folgt erhalten

so dass ich bearbeitete BootStrap.groovy, um zu versuchen, beim Start ein solches zu erstellen. Warum bringt es Gorm nicht richtig zur Sprache?

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" 
    } 
} 

diese Fehler, wenn ich die App mit derselben Nachricht, Stack-Trace starten als

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) 
+0

seltsam Gremlin folgt. Beim Warten - verschrottet als kaputt und wieder eine brandneue App neu erstellt. Ich habe den Autor/Buchteil neu erstellt und als Integrationstest ausgeführt - es funktionierte, ging zur Konsole und tippte auf der interaktiven Konsole ein - es funktionierte. Also ich habe keine Ahnung, warum die vorherige Neuinstallation nicht funktioniert hat - aber eindeutig kaputt. sehr seltsam –

+0

Sind Ihre Domänenklassen im selben Paket wie Ihre 'Application' Klasse? Wenn nicht, müssen Sie 'packageNames()' überschreiben –

+0

nein graeme sie sind nicht - die Standardanwendung groovy ist im Paket "Paket coffeeshopapp" - gleich wie das Projekt. Die Domänenklassen sind in "package org.softwood". Wie ich bereits erwähnt habe, scheint es, als würde ich eine Großschrift in Intellij sauber machen - wie auch die Run-App von der Kommandozeile aus. Wie meinst du override "packageNames()" nicht sicher, was du meinst –

Antwort

0

versuchen mit diesem

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. 
    } 
} 
+0

sah nicht aus wie es war Grails - wenn ich run-app auf der Befehlszeile es funktionierte gut, und wenn ich versuchte ein Graple sauber intellij es begann zu arbeiten nochmal. Es schien ein Problem zu sein, dass intellij aus dem Takt kam und die Erzeugung nicht mehr richtig funktioniert. die saubere Aktion zu führen, bleibt auf der Spitze - aber sollte nicht wirklich auftreten, ich denke nicht –

Verwandte Themen