2011-02-12 5 views
0

나는 다음을 시도했다.JPQL : TRUE/FALSE와 명시 적 비교가 필요한 경우의 부울 표현식?

SELECT NEW com.kawoolutions.bbstats.view.ScheduleGameLine(
    ga.id                  AS gid 
    , ga.scheduledTipoff               AS scheduledtipoff 
    ... 
    , sch.finalScore                AS homefinalscore 
    , sca.finalScore                AS awayfinalscore 
    , CASE WHEN pah.wasWithdrawn OR paa.wasWithdrawn THEN TRUE ELSE FALSE END AS waswithdrawn 
) 

마지막 줄이 중요하다.

JPQL/HQL and JPA/Hibernate: boolean expression in select constructor expression not working (unexpected AST node: AND, NPE, HqlSqlWalker.setAlias)?

에 따르면 CASE WHEN이 필요합니다. 그러나 이것을 실행할 때

으로 Hibernate가 실패 함 JPA/Hibernate의 문법에서는 분명히 지원되지 않지만 Java 및 DB 프로그래머라면 if (hasHitHard)와 같은식이 작동하도록 기대할 수 있습니다. 및/또는 선택 was_withdrawn ...

왜 이런 식으로 또는 왜 내가 기대했던대로 지원되지 않습니다?

답변

0

AS 연산자가 select 절에서 지원되는지 여부는 확실하지 않지만이 경우 어쨌든 중복됩니다. 경우 운영자에 관해서는 어쩌면 간단한 pah.wasWithdrawn 또는 paa.wasWithdrawn 충분히 좋은 것 :

SELECT NEW com.kawoolutions.bbstats.view.ScheduleGameLine(
    ga.id,ga.scheduledTipoff,..., 
    sch.finalScore, sca.finalScore, 
    pah.wasWithdrawn OR paa.wasWithdrawn 
) from ... 
+0

완전히 내 게시물을 읽어 보지 않았 보인다. 물론 AS는 억압 받는다. 다른 의견은 http://stackoverflow.com/questions/4972369/jpql-hql-and-jpa-hibernate-boolean-expression-in-select-constructor-expression-n 링크를 참조하십시오. = TRUE/ = 거짓 비교. – Kawu