【发布时间】:2014-11-22 16:08:09
【问题描述】:
我有以下实体:
@Entity
public class Node {
@Id
private int id;
@Column
private String name;
//getters, setters
}
@Entity
public class Message {
@Id
private int id;
@Column
private String message;
@Column
private Date timeStamp
@ManyToOne
private Node node;
//getters, setters
}
现在假设我有 3 个节点(N1、N2、N3)。 N1 和 N2 有消息,而 N3 没有任何消息 我想要的结果表如下:
| Node | Last Message |
-----------------------
| N1 | 2014-05-26 |
| N2 | 2014-05-23 |
| N3 | |
-----------------------
所以基本上我想要一个 JPQL 查询,它返回按每个 Node 分组的最新 Message,
还可以显示没有任何消息的节点。
到目前为止,我有以下查询,但没有给出预期的结果:
select
nod.name,
msg.timeStamp
from
Node nod,
Message msg
where
msg.timeStamp IN
(select
max(ms.timeStamp)
from
Message ms
group by
ms.node)
我可能在上面的某个地方错过了一个连接,但不确定。
【问题讨论】: