我有一个像这样的域对象(Cat):
class Cat {
String name
static hasMany = [
nicknames: String
]
}
(猫有一个名字,也有很多昵称(都是字符串))
我正在尝试查询所有具有特定昵称的猫。
我试过这个:
PagedResultList getCatsByNickname(String nickname, Map params) {
PagedResultList results = Cat.createCriteria().list(params) {
'ilike'('nicknames','%'+nickname+'%')
}
return results
}
但它永远不会返回任何结果。 (如果我将查询更改为仅使用简单的名称属性,它可以查找具有该名称的所有猫,但我想查询昵称。)
我也尝试过这个:
PagedResultList getCatsByNickname(String nickname, Map params) {
PagedResultList results = Cat.createCriteria().list(params) {
'nicknames' {
'ilike'('nicknames','%'+nickname+'%')
}
}
return results
}
但我收到错误:org.hibernate.MappingException:集合不是关联:example.Cat.nicknames
所以问题是,如何查询 String 类型的 hasMany ?
经过大量的尝试和研究,我发现这适用于 Grails 2.4.0,我不知道旧版本是否有效。
Cat.withCriteria {
createAlias('nicknames', 'n')
ilike 'n.elements', '%kitty%'
}
诀窍是使用 'n。elements'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)