2017-02-13 3 views
1

저는 최신 v3.2.6의 간단한 grails 앱을 만들었습니다. grails-app/domain에 Authors와 Book 클래스를 만들었습니다. 오류없이 및 - Grails의-응용 프로그램에서grails 3.2.6 테스트 데이터를 초기화하지 못했습니다 "도메인 클래스가 아니거나 GORM이 제대로 초기화되지 않았습니다"

책 클래스/도메인 (나는 또한 책 클래스가) 내가 응용 프로그램을 시작

package org.softwood 

class Book { 

    String title 
    Author author 

    //static belongsTo = [author:Author] 

    static constraints = { 
     author nullable:true 
    } 
} 

완전성에 대해

package org.softwood 

//Author has many books logical model 

class Author { 

    String name 
    Collection books 

    //static hasMany = [books:Book] 

    static constraints = { 
     books nullable:true 
    } 
} 

와 책 도메인 클래스 다음과 같습니다 저자의 인스턴스를 만들기 위해 grails 콘솔을 사용하려고 시도했는데 이런 오류가 발생했습니다.

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

이상한 놈아으로하려고 다음과 내가 같은 메시지, 스택 추적과 함께 응용 프로그램을 시작하는이 오류가. 기다리는 동안 - 깨진으로 폐지하고 다시 새로운 앱을 다시 만들었습니다. 저자/책자를 다시 만들고 통합 테스트를 실행했습니다. 작동하고 대화 형 콘솔에서 콘솔에 입력 한 다음 작동합니다. 그래서 이전의 새로운 설치가 왜 작동하지 않았는지 전혀 알지 못합니다. 매우 이상한 –

+0

도메인 클래스가 'Application' 클래스와 같은 패키지에 있습니까? 그렇지 않다면'packageNames()' –

+0

을 무시해야 할 수도 있습니다. 기본 응용 프로그램 그루비는 "package coffeeshopapp"패키지에 있습니다 - 프로젝트와 동일합니다. 도메인 클래스는 "package org.softwood"에 있습니다. 내가 intellij에서 깨끗한 그라데이션을 수행했다는 언급은 커맨드 라인에서 run-app처럼 다시 고쳐지는 것처럼 보였다. 어떻게 당신이 무슨 뜻인지 확실하지 않은 "packageNames()"를 뜻합니까? –

답변

0

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

그것이 grails 인 것처럼 보이지 않았습니다. - 명령 행에서 run-app를 사용할 때 잘 동작했고, intellij 내부에서 gradle clean을 시도했을 때 작동하기 시작했습니다. 다시. intellij가 단계에서 빠져 나와 세대가 제대로 작동하지 않는 문제가있는 것 같았습니다. 그것의 위에 깨끗한 행동 일종의 유지를 실행 -하지만 shouldnt는 정말로 내가 생각하지 말아야한다. –