2015-02-03 3 views
1

I이 실행중인 모든 Trackings의 수를 찾으려고 다음 쿼리 :JPA QueryDSL : 카운트() ORA-01722에 이르게 : 유효하지 않은 숫자

new JPAQuery(getEntityManager()).from(myTracking) 
      .where(myTracking.trackingStatus.isNotNull(), 
      myTracking.trackingStatus.eq(TrackingStatus.RUNNING)) 
      .count() 

이 ORA-01722 리드를 : 유효하지 않은 번호 . 왜?

편집 : SQL 문 로깅 :

/* select 
    count(myTracking) 
from 
    MyTracking myTracking 
where 
    myTracking.trackingStatus is not null 
    and myTracking.trackingStatus = ?1 */ select 
     count(mytrackin0_.ID) as col_0_0_ 
    from 
     owner.T_my_TRACKING mytrackin0_ 
    where 
     (
      mytrackin0_.STATUS is not null 
     ) 
     and mytrackin0_.STATUS=? 
+0

아마 생성 된 SQL을 보면 알 수 있나요? –

+0

어떻게하면됩니까? – Skeffington

+0

어떤 소프트웨어가 쿼리를 보내는 지 로그에서 확인하십시오. 따라서 QueryDSL 아마도 –

답변

1

솔루션은 내가 열거 속성에 @Enumerated (EnumType.STRING)을 추가하는 것을 잊었다입니다.

MyEntity{ 
@Enumerated(EnumType.STRING) 
private TrackingStatus trackingStatus; 
} 

이 결과는 열거 형 위치가되고 열거 형 문자열은 데이터베이스 열에 삽입되지 않습니다.
주석을 추가하면 데이터베이스에서 아직 실행중인 추적이 Enum-Position과 Enum-String의 쿼리 -> ORA-01722 : 잘못된 번호와 비교되었습니다.
해결책은 잘못 매핑 된 몇 가지 추적을 삭제/마이그레이션하는 것이 었습니다.

관련 문제