使用 hasmany 字符串进行 Grails / GORM 条件查询

2023-11-22

我有一个像这样的域对象(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(使用前将#替换为@)

使用 hasmany 字符串进行 Grails / GORM 条件查询 的相关文章

随机推荐