2014-11-23 61 views
0

我這樣做:Grails的不DBCONSOLE

class Face { 
    String name 
    def ears = [] 
    Nose nose 

    void addEar(Ear ear){ 
    ears << ear 
    } 
} 

class Nose { 
    String name 
} 

class Ear { 
    String name 
} 

而且在BootStrap.groovy中:

def nose = new Nose(name: "Nose") 
    nose.save() 

    def leftEar = new Ear(name: "Left ear") 
    leftEar.save() 
    def rightEar = new Ear(name: "Right ear") 
    rightEar.save() 

    def face = new Face(name: "Face", nose: nose) 
    face.addEar(leftEar) 
    face.addEar(rightEar) 
    face.save() 

當我運行的應用程序,並輸入DBCONSOLE看錶,臉上有一參考它的鼻子,我可以讀到它的名字「臉」,但它沒有提及它的耳朵。我應該如何保存這個列表,以便以後可以訪問它?

或者萬一它真的被保存在某個地方,在哪裏?我應該如何訪問它?

+0

查看關於此處關聯的Grails文檔:http://grails.org/doc/latest/guide/GORM.html#oneToMany(專注於「一對多」和「多對多」關聯)。你可以找到關於如何聲明關聯的好例子(靜態'hasMany'屬性)並向它們添加元素('addTo *'方法)。 – 2014-11-23 20:45:53

+0

太棒了!我試圖使用hasMany,但是我沒有添加addTo元素,所以也沒有工作。現在它工作正常!謝謝!你會回答這個問題,所以我可以選擇你的答案是正確的嗎? – 2014-11-23 21:16:47

+0

我很高興它幫助:)我剛剛手動'轉換'我的評論回答。 – 2014-11-23 21:24:35

回答

0

看看Grails documentation about associations。關注「一對多」和「多對多」協會。你可以找到關於如何聲明關聯的好例子(靜態hasMany屬性)並向它們添加元素(addTo*方法)。

+0

要保持持久性的域類中的所有字段必須具有聲明的類型,否則GORM不知道如何存儲它並以靜默方式忽略它。如果你存儲了一個字符串/數字/布爾/等等,也會發生同樣的情況。在那個財產。這有時被用作具有故意瞬態/非持久性屬性的稍微懶惰的方式,但是我的首選是如果有意義的話,鍵入它,然後將它添加到「瞬變」列表中以明確聲明您的意圖。 – 2014-11-23 23:11:59

+0

@BurtBeckwith:謝謝你的出色解釋! – 2014-11-24 08:21:59