【问题标题】:HQL issue with hasMany StringhasMany 字符串的 HQL 问题
【发布时间】:2011-02-06 18:14:23
【问题描述】:

这就是这个问题的背景:

我有一个 Grails 类:

class User{
   long id
   static hasMany = [skills: String]
   ...
}

我想在 2 个条件下从数据库中获取用户:

  • ID 集
  • 一组技能(字符串)

我编写了这个适用于 id 的查询,但我无法让技能部分发挥作用:

User.findAll( "from User 
where id in (5067120,5067121,...5067139)" )

目前,我在此查询后手动选择具有正确技能的用户,但显然这不是一个有效的解决方案。 我该如何解决这个问题?

谢谢!

【问题讨论】:

    标签: grails find hql grails-orm


    【解决方案1】:

    这应该可行:

    def ids = [5067120L, 5067121L, ...5067139L]
    def skills = ['skill 1', 'skill 2']
    
    def users = User.executeQuery(
       'select distinct u ' +
       'from User u inner join u.skills skills ' +
       'where u.id in (:ids) and skills in (:skills)',
    [ids: ids, skills: skills])
    

    请注意,如果 id 字段是常规 long,则无需指定 id 字段,Grails 会为您指定。

    【讨论】:

      猜你喜欢
      • 2014-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多