2011-12-01 3 views
9

단일 값을 스칼라 데이터 유형에 매핑하는 JPA의 지원이 있습니까? 예를 들어, 일부 변수JPA를 사용하여 단일 값 검색?

int numerOfEmployees 

에 다음 쿼리

SELECT COUNT(*) AS NUM FROM EMPLOYEES 

에 NUM지도 또는 I는 사용 사례에 대한 JDBC를 사용해야 할까? 어떤 경우는 결과의 유형이 데이터베이스, 즉에 따라 달라질 수 있음을

long num = ((Number)em.createNativeQuery("select count(*) from Employees") 
        .getSingleResult()).longValue(); 

참고 : JPQL이

long num = ((Number)em.createQuery("select count(e) from Employee e") 
        .getSingleResult()).longValue(); 

뿐만 아니라에서 네이티브 SQL 쿼리를 쿼리에서

답변

14

예, 스칼라 유형을 반환 할 수 있습니다 그것은 BigDecimal과 같을 수 있습니다.

+0

도우, 고마워. docs에서 가능하다는 것을 이해하지 못했습니다. http://docs.oracle.com/javaee/6/api/javax/persistence/EntityManager.html#createNativeQuery(java.lang.String) [참고로 필자는 객체 유형을 지정하고 intValue()를 사용하여 예제를 작성하십시오.] –

+0

'BigInteger'의 수퍼 유형 인'(Number) ... longValue()'를 사용하도록 솔루션을 업데이트했습니다. 이 경우'Number'의 하위 타입을 반환하지 않는 DB/드라이버는 있지만 원래 응답의'(long)'캐스트는 절대로 작동하지 않습니다. (당신이'Number.class'를 타입 매핑으로 지정할 수 있는지 궁금합니다 (Double.class가 작동하지 않는 것처럼 보입니다 : http://stackoverflow.com/questions/8959771/jpql-native-query-using- 합계 및 집계) – eckes

관련 문제