拥有以下域类:
class Word {
Map translations
}
BootStrap中的实例:
def word1 = new Word().with{
translations = [en:"game"]
save(failOnError: true, flush: true)
}
def word2 = new Word().with{
translations = [en:"life"]
save(failOnError: true, flush: true)
}
在某些startPart
中,翻译以locale
开头的所有单词的常规方法是什么?例如:
def listWordsStartsWith(startPart, locale, params){
def regexp = startPart+'%'
def query = Word.where {
//translations[locale] =~ regexp
}
def words = query.list(params)
words
}
答案 0 :(得分:4)
我不认为使用GORM使用translations
字段的集合值是可行的。我建议使用以下备用映射:
class Word {
static hasMany = [translations: Translation]
}
class Translation {
static belongsTo = Word
String key
String value
}
然后查询将是这样的:
Word.createCriteria().list {
translations {
like('key', startPart+'%')
}
}
答案 1 :(得分:1)
wethod依赖于Groovy SQL,其中有一个非常小的Groovy子集。它映射SQL命令,但允许对属性和格式良好的语法进行IDE控制。 不幸的是,你不能在里面写所有的Groovy(没有函数,很少有运算符,没有地图等)。
检查documentation以查看接受的内容。