2010-10-05 116 views
2

我知道我可以通过创建一个类: Grails的创建域级的书Grails的控制台,创建/测试类

这将创建一个在我的项目一类的文件,然后我就可以通过控制台访问。我的问题是'我怎样才能在控制台本身创建一个类,然后我可以保存()?'

如果我输入控制台下面我得到一个错误:

class Tree { 
    String name 
    Date dateCreated 
    } 

    def tree = new Tree(name:'oak').save() 

我得到的错误是:

Exception thrown 

    groovy.lang.MissingMethodException: No signature of method: 
     Tree.save() is applicable for argument types:() values: [] 
    Possible solutions: wait(), any(), wait(long), each(groovy.lang.Closure), 
     sleep(long), use([Ljava.lang.Object;) 

    at ConsoleScript6.run(ConsoleScript6:6) 
+0

'通过控制台'你的意思是Groovy控制台?如果是这样,那么你有一些坏消息... – proflux 2010-10-05 14:33:27

回答

2

这是不可能的。您只是创建了一个普通的类,控制台为您编译并使其可用,但无法将其转换为域类并为其提供GORM行为。

域类需要位于grails-app/domain文件夹中,或者也可以使用Hibernate hbm.xml文件或注释映射类。

+0

:-(耻辱。我想要一个快速和肮脏的测试区域使用,而不创建类,我将不得不收拾后。 – 2010-10-06 08:20:43

0

这是不正确的,您可以直接从控制台的Grails测试领域类 - 只是“进口package.domain类名”启动控制台脚本

如果在封装测试领域类:

class A { 
String testStr 
} 

然后创建控制台脚本像这样:

import test.A 
def t = new A(testStr:"blah").save() 

//作品!

享受...

+0

我知道我可以做到这一点,但这并不是我所问的,我是问我是否可以在控制台中创建域类,所以要做真正的原型设计,以保证在事后不会造成混乱 – 2010-10-15 11:10:16

+0

同意,会很好,很好,很有用,等等,但现在还没有这样的情况。使用Grails交互式控制台相对来说比较快捷(即在代码更改时快速刷新域类),因此您可以创建原型,比您(和其他人)想要的更慢。 – virtualeyes 2010-10-17 08:56:53