2010-10-05 66 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