2012-02-02 52 views
2

具有以下域类:的Grails GORM:常规地图

class Word { 

    Map translations 
    static hasMany = [translations: String] 

    String toString(){ 
     id 
    } 

} 

,并保存在Grails的自举一些实例:

def word1 = new Word(translations: [en:"game"]); 
word1.save(failOnError: true, flush: true) 

def word3 = new Word(translations: [en:"gate"]); 
word3.save(failOnError: true, flush: true) 

def word2 = new Word(translations: [en:"life"]); 
word2.save(failOnError: true, flush: true) 

它不能够正确地得到translations场。例如:

//input 
println Word.findAll().each { 
      println it.translations 
     } 
//output 
[:] 
[:] 
[:] 
[1, 2, 3] 

怎么了?

+0

您正在定义两个适当的与Map和hasMany命名为'translations'。我很惊讶,它可以工作,但我会开始只有一个,它看起来像你想它是地图。 – 2012-02-02 14:26:19

+0

没关系,我想。即使没有hasMany,它也不起作用。检查此:http://tinyurl.com/7ysmq2m – tiktak 2012-02-02 14:29:29

+0

@tiktak该链接似乎表明它应该没有'hasMany' – 2012-02-02 14:42:32

回答

-1

应该

static hasMany = [translations: Map] 

,而不是

static hasMany = [translations: String] 
+0

http://grails.org/doc/latest/guide/GORM.html#sets,ListsAndMaps – tiktak 2012-02-09 10:21:55

0

的医生说:

如果你想字符串/值对GORM可以用下面的地图这一个简单的图:

class Author { 
    Map books // map of ISBN:book names 
} 
def a = new Author() 
a.books = ["1590597583":"Grails Book"] 
a.save()