2014-04-24 2 views
0

에 배포 할 때 쿼리가 내가 내 코드에있는 사용자 정의 부두 인스턴스에, 그것은 잘 실행 내 통합 테스트 컨테이너에서JPA 쿼리 부두는 내장에서 작동하지만, 부두

em.createQuery("select bp from BlogPost bp WHERE ?1 MEMBER OF bp.categories") 
       .setParameter(1, c) 
       .getResultList(); 

입니다 실행되지 않습니다.

그러나 gradle jettyRun 또는 jettyRunWar를 사용하여 배포 할 때 위 쿼리를 실행할 수 없으면 빈 결과 집합과 다음 오류가 발생합니다. [선택 : "[1]"예상 매개 변수 "[]"준비된 쿼리 "PreparedQuery에 대한 일치하지 않는 공급 사용자 매개 변수 -

4528

간단한은 openjpa.Runtime [QTP-739763767-0 @ 1241194115] WARN bp from BlogPost bp bp.categories의 멤버 1 명 -> [t0.id, t2.id, t2.accessLevel, t3.id, t3.address1, t3.address2, t3.city, t3. 국가, t3.homephone, t3.mobilephone, t3.postal, t3.province, t2.identifier, t2.password_md5, t0.body, t0.dateCreated, t0.datePublished, t0.title FROM BlogPost t0 INNER JOIN BlogPost_BlogCategory t1 ON t0.id = t1.BLOGPOST_ID LEFT OUTER JOIN U t2.content 정보 t3.id WHERE (t1.CATEGORIES_ID IS NULL)] "에 문의하십시오.

나는 단지 주위를 코딩 할 수 있었지만 MEMBER OF를 사용하면 웹 컨테이너에 어떻게 전개되는지에 따라 다르게 실행된다는 것이 이상하다.

답변

0

이것은 OpenJpa에서 일종의 버그입니다.

JPA를 사용하고있어 최대 절전 모드로 전환 한 후 절전 모드로 전환하는 방법을 확인했습니다. 최대 절전 모드는 조금 더 엄격하고 무시할 수없는 수준으로 내 특수 효과와 클래스를 약간 변경해야했습니다. 그러나 20 분 후 문제는 해결되었습니다. 뿐만 아니라 숨겨진 다른 문제도 수정되었습니다.

그래서 나는 여기에서 내 솔루션을 Hibernate라고 부르겠다. 매개 변수 또는 구성 또는 무언가가있을 경우 집단이 정보를 원하지만 내 해결책이 충족됩니다.