我想从2个不同的表中返回5个最新的域实例。我有:
class Domain1 {
...
Date dateCreated
static mapping = {
sort "dateCreated"
}
...
}
和
class Domain2 {
...
Date dateCreated
static mapping = {
sort "dateCreated"
}
...
}
无论任何用户来自哪里,我都需要由dateCreated 创建的5个最近用户,无论他们来自哪个表,即如果一个用户的所有5个最近创建的实例都是Domain1类型的,则查询返回5个Domain1实例。我已经研究了可用的各种查询选项,还没有确定可以满足这些需求的条件(我对HQL的关注不多)。用户域与域具有一对多关系:
class User {
...
static hasMany = [domain1s:Domain1,
domain2s:Domain2,]
...
}
最佳答案
一般而言,可以有几种方法可以做到这一点。列出以下几个:
select * from (
select
dp.field1 as field1,dp.field2 as field2
from DOMAIN1 dd
where dd.userId = 2
union
select
dp.field1 as field1,dp.field2 as field2
from DOMAIN2 dd
where dd.userId = 2
) as final_table order by dateCreated desc limit0,5
参见this帖子。