내가 JPA 2.0.I를 사용하여 기본 쿼리를 실행하려고는 orm.xmlParamertized 기본 쿼리 [쉼표로 구분 된 문자열로 매개 변수] 빈 결과 집합을 반환 (JPA를 사용하여)
Orm.xml
<named-native-query name="getAgencyUsersByRoles">
<query><![CDATA[SELECT DISTINCT a1.USR_LOGIN,c.PERSON_FIRST_NAME,c.PERSON_LAST_NAME,a1.EMAIL, b.auth_role_code FROM USERS a1,PERSON_AUTH_ROLES b,PERSON c WHERE ((b.group_code = 'RCATAG' and a1.person_id=b.person_id and b.person_id=c.person_id AND b.auth_role_code IN (?)) OR (b.group_code = 'RCEMP' and a1.person_id=b.person_id and b.person_id=c.person_id AND b.auth_role_code IN (?))) AND a1.email IS NOT NULL AND a1.status in ('ACTIVE','PASSWORD EXPIRED') ORDER BY a1.usr_login]]></query>
</named-native-query>
내 기본 쿼리를 정의한 jpa를 사용하여 쿼리를 실행중인 코드입니다.
Query query = getEntityManager()
.createNamedQuery(NotificationPersistenceConstants.GET_AGENCY_USERS_BY_ROLES);
query.setParameter(1, roles);
query.setParameter(2, cccRoles);
// fetch the results
List<Object[]> list = query.getResultList();
이 쿼리는 내 appplication의 JPA 로그를 확인 실행하는 동안 예외를 throw하지만 나에게 빈 결과 집합을 반환하지 않습니다.
내 DB 서버에서 동일한 쿼리를 실행하면 쿼리에 아무런 문제가 없다는 것을 증명하는 결과 집합을 얻고이 쿼리에 대한 레코드가 반환됩니다.
내 기본 쿼리를 중단하고 쿼리에있는 모든 테이블에 대해 별도의 네이티브 쿼리로 실행하려고했습니다. 다음은 DISTINCT 절이 범인이 될 수 있는지 확인하기 위해 DISTINCT 절과 함께 시도한 것입니다. 그러나 그들은 모두 좋은 일을 내가 쿼리를 전달하고있는 역할 & cccRoles 쿼리 paramters 업데이트 List<Object[]>
SELECT DISTINCT a1.USR_LOGIN FROM USERS a1 ORDER BY a1.usr_login
SELECT DISTINCT b.auth_role_code FROM PERSON_AUTH_ROLES b
SELECT DISTINCT c.PERSON_LAST_NAME FROM PERSON c
에서 결과를 주었다.
roles = 'teller','lender','bacth',etc... // This list is dynamically created at runtime
cccRoles = 'cccadmin','ccuser',etc // This list is dynamically created at runtime
이제는 어떤 문제인지 잘 모르겠습니다.
검색어? - DB 서버에서 직접 동일한 쿼리를 실행하여 제대로 작동하는지 확인해야합니다.
EntityManager (JPA)? - 모든 구성을 확인하고 위에서 언급 한 개별 쿼리를 실행하고 결과를 다시 얻습니다.
사람은 8.5, JPA 2.0 WAS를 사용하여 동일한 문제가 발생하는 경우
이 제발 도와주세요 ...? 결합합니다.
쿼리를 추적하십시오. 예 :'세션 설정 이벤트 변경 '10046 추적 이름 컨텍스트 영원히, 레벨 12';' –