Hibernate 同一表上的HQL内部联接

Hibernate 同一表上的HQL内部联接,hibernate,grails,hql,gorm,Hibernate,Grails,Hql,Gorm,今天早些时候我问了一个关于GORM的问题:然而,有人建议使用HQL可以轻松实现。但是使用HQL我得到了意外的令牌错误。当我对此进行研究时,我发现HQL不允许内部联接,除非两个实体之间存在关联: 所以,我迷路了。首先,我很沮丧为什么GORM不支持这样一个简单的查询,现在对于HQL,我的问题是:如何在子集上执行内部联接 我所尝试的: 意外标记:靠近第1行第16列[从选择中选择c 名称,MaxDate从com.mine.Color创建为maxTime 按名称分组为t内部连接颜色c on c.name=

今天早些时候我问了一个关于GORM的问题:然而,有人建议使用HQL可以轻松实现。但是使用HQL我得到了意外的令牌错误。当我对此进行研究时,我发现HQL不允许内部联接,除非两个实体之间存在关联:

所以,我迷路了。首先,我很沮丧为什么GORM不支持这样一个简单的查询,现在对于HQL,我的问题是:如何在子集上执行内部联接

我所尝试的:

意外标记:靠近第1行第16列[从选择中选择c 名称,MaxDate从com.mine.Color创建为maxTime 按名称分组为t内部连接颜色c on c.name=t.name和 c、 dateCreated=t.maxTime]

我怀疑没有检测到第二个Color实例,因为包名没有自动加上前缀。所以在阅读其他答案时,我试着:

意外标记:靠近第1行第16列[从选择中选择c 名称,MaxDate从com.mine.Color创建为maxTime 按名称分组为t,com.mine.Color为c on c.name= t、 name和c.dateCreated=t.maxTime]

给你:

Color.executeQuery("""    
    Select c
    From Color c
    where c.dateCreated = (select max(b.dateCreated) from Color b where b.name = c.name)
    """)

我想我有东西要给你,等一下你能解释一下有什么不同吗?除了将子查询放在where子句而不是from中之外?使这两个查询与HQL透视图不同的根本原因是什么?您的查询返回记录,而我的查询只返回一个值,因此HQL可能更适合处理它。我不太确定