查询:我想知道如何在Grails.中获得域实体的最新条目。
问题域:
class Parent {
String name
static hasMany = [children:Child]
}
class Child {
String name
Parent parent
static belongsTo = [parent:Parent]
}数据模型

结果
我喜欢用id 4和7来记录。
哪里应该是“给我每一个父母的最后记录,孩子的名字就像'Rox%‘
到目前为止我已经试过了
SELECT
MAX(id)
FROM child
WHERE parent_id IN(SELECT
p.id
FROM parent AS p
JOIN child AS c
ON (c.parent_id = p.id
AND c.name LIKE 'Rox%'))
GROUP BY parent_id 提前谢谢。
发布于 2011-09-13 13:53:12
你的描述有点模糊,但我想这就是你想要的:
def idList = [1,4]
def c = Parent.createCriteria()
def result = c.list {
'in'("id", idList)
children {
like("name","Rox%")
}
groupProperty("id")
}编辑:
当我把答案打出来的时候,你改变了你的整个问题,把它改为匹配。
最终编辑:在编辑后的代码中向子程序{}添加排序,以获得所需的排序。
发布于 2011-09-14 09:40:51
Parent.createCriteria().list(max:10,offset:0) {
'children' {
like("name","Rox%")
order("id","desc")
groupProperty("id")
}
groupProperty("id")
}或
Parent.createCriteria().list(max:10,offset:0) {
createAlias("children", "ac")
like("ac.name","Rox%")
order("ac.id","desc")
groupProperty("ac.id")
groupProperty("id")
}如果这两个标准查询都基于联接而彼此不同。有关在条件http://adhockery.blogspot.com/2009/06/querying-by-association-redux.html中进一步阅读联接的信息
发布于 2011-09-14 09:50:52
为此,您需要一个SQL窗口函数。在Oracle中,这类似于:
select max(id)
over(partition by parent_id, order by dateCreated)
from child
group by parent_id在Hibernate/HQL中的单个查询中无法做到这一点。
(你也想得到第9张唱片,对吧?)
https://stackoverflow.com/questions/7402714
复制相似问题