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 の良い例はどこで入手できますか?
ありがとう、あなたの答えをいただければ幸いです。