【问题标题】:Grails GORM getting people with both tagsGrails GORM 让人们同时拥有这两个标签
【发布时间】:2017-11-28 13:22:23
【问题描述】:

我有课:

class Person {
    static hasMany = [tags: Tag]
}

class Tag {
}

要从 tagList 中获取至少有一个标签的人,我可以创建一个条件

public Criteria hasAtLeastOneOf(List<Tag> tagList) {
    return Person.createCriteria().buildCriteria {
        'tags' {
          'in' 'id', tagList.collect{it.id}
        }
    }
}

我需要创建什么样的标准才能让所有人都拥有来自 tagList 的每个标签(例如 tagList[0] 和 tagList[1] 等)

【问题讨论】:

  • 这个criteria有什么问题?
  • 条件返回有 tagList[0] 或 tagList[1] 的人。我想要拥有 tagList[0] 和 tagList[1] 的人。
  • 您能否发布为执行此条件而生成的 SQL 日志?
  • 你能给出一个符合你想法的SQL吗?

标签: hibernate grails grails-orm


【解决方案1】:

类似于这个未回答的问题:

Grails 2.5.1 (hibernate 3) criteria multiple joins to same table

简而言之,您需要在 Person 和 Tag 之间进行多个连接,一个用于要比较的列表中的每个标记。正如链接问题上的 cmets 所描述的,这可以通过手动构建连接在 HQL 中完成,但标准不(似乎?)支持这一点。

【讨论】:

    猜你喜欢
    • 2018-10-13
    • 2011-12-08
    • 2013-04-04
    • 1970-01-01
    • 2013-11-13
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多