2011-01-04 6 views
2

MySql 데이터베이스에서 실행되는 JPA (Eclipselink v.2.1.2)에서 집계 SUM 기능에 문제가 있습니다. 'TIME'유형의 필드에서 값을 합계해야합니다. 그러나 쿼리를 실행하면 잘못된 결과가 반환됩니다. 예를 들어 , I는 두 값이 ('04 : 15 : 00 및 05 : 50 : 00 ') 및 결과적 96500. 쿼리 (JPQL)이다 :JPA의 시간 필드 값 합계

는 적절한 방법이란
SELECT SUM(w.timeSpent) FROM WorkingHours w 

JPA의 시간 값?

미리 감사드립니다.

답변

2

(> = 2.1) 당신이 시도 할 수,

SELECT FUNC('SEC_TO_TIME', SUM(FUNC('TIME_TO_SEC', w.timeSpent))) FROM WorkingHours w 
+0

작동합니다! 고맙습니다. – Vladimir

1

결과가 시간 또는 정수입니까?

어떤 SQL이 생성되며, MySQL은이를 위해 무엇을 반환합니까? MySQL이 반환하는 것일 수 있습니다. 동일한 SQL로 원시 SQL 쿼리를 시도하십시오. 은 EclipseLink에서

+0

음, 결과는 두 번이다. MySQL 콘솔에서 SQL을 실행하면 합계 (SELECT timeSpent FROM WorkingHours)가 주어지고 TIME 형식이 아닌 결과도 표시됩니다. MySQL에서 합계를 계산하는 다른 방법이 있다고 가정하지만, JPQL이 동일한 것을 수행 할 수 있는지 확실하지 않습니다. – Vladimir

+0

JPQL에서 할 수있는 방법이없는 것 같습니다. 네이티브 쿼리는 다음과 같아야합니다. SELECT SEC_TO_TIME (SUM (TIME_TO_SEC (w.TimeSpent))) FROM WorkingHours w – Vladimir