【发布时间】:2013-09-25 23:08:40
【问题描述】:
我正在尝试使用 QueryDsl 调用 SQL 语句,Spring Data JPA 无法涵盖该语句。 这是我要运行的句子。
SELECT timestamp, deviceId
FROM EventData a
INNER JOIN
(SELECT max(timestamp) timestamp, deviceId
FROM EventData
GROUP BY deviceId) b
USING (timestamp,deviceId)
WHERE deviceId in ('1', '2')
我确实喜欢以下内容:
@PersistenceContext
EntityManager em;
JPAQuery query = new JPAQuery(em);
QEventData eventData = new QEventData();
return
query.from(eventData)
.innerJoin(
query.from(eventData)
.groupBy(eventData.deviceId)
.list(eventData.deviceId, eventData.timestamp.max())
).on(eventData.deviceId.eq(?))
.where(eventData.deviceId.in("1", "2"))
.list(eventData);
我不知道我为 innerJoin 放了什么。我尝试了 QueryDsl 示例,但找不到正确的示例。我在哪里可以获得 QueryDsl 的好示例?
谢谢,您的回答将不胜感激。
【问题讨论】:
-
第一次查询的目的是什么?我无法理解它。