Grails gorm 查询问题

Posted

技术标签:

【中文标题】Grails gorm 查询问题【英文标题】:Grails gorm query question 【发布时间】:2011-06-25 16:59:33 【问题描述】:

拥有领域类:

class A 

 Date dateCreated
 static hasMany = [b:B]
 ...



class B 

  String name
  String value
...


我可以使用什么 createCriteria 或 HQL 查询来返回列表:

A 的创建日期 名称条目设置为“X”的 A 的 B 值

注意:虽然没有明确的约束,但每个“X”和一个组合只有一个“值”。

谢谢

【问题讨论】:

【参考方案1】:

HQL 是

def results = A.executeQuery(
    'select a.id, a.dateCreated, b from A a inner join a.b b ' +
    'where b.name=:name',
    [name: 'X'])

这将为您提供包含 A.idA.dateCreatedB 实例列表的 3 元素 Object[] 数组的 List。我将 id 添加到查询中,以便您可以在客户端对其进行分组:

def grouped = results.groupBy  it[0] 

这将是一个Map,其中键是A id,值是来自原始结果的Lists。

理想情况下,您会在数据库中进行分组,但这会使查询复杂化,并且假设您没有大量结果,它应该很快。

【讨论】:

以上是关于Grails gorm 查询问题的主要内容,如果未能解决你的问题,请参考以下文章

Grails Gorm 查询限制

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

Grails GORM 查询以匹配多个关联对象

命名查询中的 Grails GORM 计数函数

GRAILS / GORM:动态多重连接

GORM 查询多个集合