如何使Grails子查询成为简单示例?

问题描述

我想基于子查询的最大日期值来获取最新记录。这就是整个sql

select c1.cr_version_id,c1.current_status_id
from cr_version c1
where c1.date_created = (
    select max(date_created)
    from cr_version
    where change_request_id = c1.change_request_id);

如此简单,但是我似乎无法使用DetachedCriteria在Grails中进行等效查询。我以为子查询可能是

def subq = CRVersion.where {
  projections {
    groupProperty("changeRequest")
    max("dateCreated")
  }
}

但是后来我不知道如何从主查询中使用子查询,并加入id。我尝试的一切最终都会在某个时候结束:

"ERROR: subquery must return only one column"

解决方法

经过很多挣扎之后,我认为我拥有了我所需要的核心。我可以在此基础上构建:

string.IsNullOrEmpty(whateverStringDate) ? DateTime.MaxValue : DateTime.Parse(whateverStringDate);