限制不同查询返回的结果

时间:2013-07-08 20:22:17

标签: hibernate grails hql gorm hibernate-criteria

在我的Grails应用程序的域模型中,我在事件和性能之间存在1-N关系(因为许多艺术家可能会在每个事件中执行)。我想检索最近添加了性能的5个事件。

我尝试使用以下条件查询执行此操作:

    List<Event> event = Event.createCriteria().listDistinct {
        performances {
            order("dateCreated", "desc")
            isNotNull("dateCreated")
        }
        maxResults(count)
    }

但是,您似乎无法使用maxResults限制不同查询的结果集。有没有其他方法来实现这一目标,例如使用HQL?

1 个答案:

答案 0 :(得分:4)

这应该足够了吗?

Event.executeQuery("select distinct e from Event as e \
                    inner join e.performances as p \
                    where p.dateCreated is not null \
                    order by p.dateCreated desc", [max: 5])

如果您还需要同一查询中每个performances对应的event,则可以使用inner join fetch