2014-01-22 2 views
0

MySQL 쿼리를 JPA로 변환하려고합니다.MySQL을 JPA로 변환

MySQL5와 EclipseLink 2.4.2를 사용하고 있습니다.

SELECT s.id, s.startDate, CAST(GROUP_CONCAT(DISTINCT s.endDate ORDER BY s.date DESC) AS DATE) endDate 
FROM table_s s 
WHERE ... 
GROUP BY s.id, s.startDate 

iddate가 기본 키입니다

다음은 MySQL의 쿼리입니다. 그것들은 JPA에서 embeddable id로 표현되고 엔티티에서도 필드를 읽을 수 있습니다 (insertable/updatable = false).

다음은 JPA 쿼리의 :

SELECT s.id, s.startDate, SQL('CAST(GROUP_CONCAT(DISTINCT ? ORDER BY ? DESC) AS DATE)', s.endDate, s.date) AS endDate 
FROM EntityS s 
WHERE ... 
GROUP BY s.id, s.startDate 

현재의 문제는 생성 된 SQL 쿼리 내가 모르는 이유 s.startDate을 포함하지 않습니다.

간단히 코드를 SELECT s.id, s.startDate, s.endDate으로 변경하면 작동하지만 ... 마지막으로 endDate을 가져와야합니다.

나는 MAX(s.endDate)을 시도했지만 실제로는 (그것이 현재 작동하더라도, 그것은 정확하지 그리고 잘못된 결과를 보낼 수 있습니다) 누군가가 아이디어 나 솔루션을 가지고있는 경우

것은, 내가 기뻐할 것을 마지막 값을 제공하지 않습니다 .

답변

0

좋아, 그렇지 않으면 그것을 만든 :

SELECT s.id, s.startDate, s.endDate 
FROM EntityS s 
WHERE ... 
AND s.date = (
    SELECT MAX(s.date) 
    FROM EntityS s2 
    WHERE s2.id = s.id 
    AND s2.startDate = s.startDate 
    AND ... 
) 
GROUP BY s.id, s.startDate