次のようなドメイン オブジェクト (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 に対してどのようにクエリを実行するかということです。