如何在SQL/Hibernate/GORM中创建此类查询?

如何在SQL/Hibernate/GORM中创建此类查询?,sql,hibernate,grails,gorm,Sql,Hibernate,Grails,Gorm,GORM中的初始实现类似于 def stuff = Table.find { active = true } 假设我们存储了不同的“修订”,一次只能有一个修订处于活动状态 问题是当您创建一个最初不处于活动状态的新表时。我想要一个活动的,或者如果没有活动的,则要最近的 您将如何创建表示以下内容的查询: 对于每种类型的表(选择在修订之间共享的不同someId),为我获取活动修订,或者,如果没有,为我获取最近创建的修订 这个问题超出了GORM的能力范围吗?我应该读什么?这不会总是通过一个查询返回结果

GORM中的初始实现类似于

def stuff = Table.find { active = true }
假设我们存储了不同的“修订”,一次只能有一个修订处于活动状态

问题是当您创建一个最初不处于活动状态的新表时。我想要一个活动的,或者如果没有活动的,则要最近的

您将如何创建表示以下内容的查询: 对于每种类型的表(选择在修订之间共享的不同someId),为我获取活动修订,或者,如果没有,为我获取最近创建的修订


这个问题超出了GORM的能力范围吗?我应该读什么?

这不会总是通过一个查询返回结果,但我相信它会满足您的要求:

def stuff = Table.findByActive(true) ?: Table.first()

我想我可能没有把要求传达得那么好。假设这些记录对应于数据库中的记录:Table(id:0,someId:1,revision:1,active:false)Table(id:1,someId:1,revision:2,active:true)Table(id:2,someId:2,revision:1,active:false),其中还将创建一个日期,我希望我的查询返回“id”为1和2的行。1是因为它是活动的,2是因为没有id为2的活动记录,理论上它是最新的。@CodeMonkeyCharlie所以您似乎想返回所有活动表和最新的(无论它是否是活动的),对吗?只有在共享someId的所有表中没有活动记录时才返回最新的。最后,我只做了两个不同的查询并合并了结果,现在应该可以了。不过我不喜欢。