결과를 일부 필드로 그룹화하고 IN 절을 사용하여 결과를 제한해야하는 명명 된 쿼리를 만들어야합니다.OpenJpa에서 큰 목록이있는 IN 절이 너무 복잡한 문을 발생했습니다.
는 내가이는 OpenJPA와 IBM DB2를 사용하고이
SELECT new MyDTO(e.objID) FROM Entity e WHERE e.objId IN (:listOfIDs) GROUP BY e.attr1, e.attr2
같이 보입니다. 어떤 경우에는 ID의 내 목록은 매우 클 수 있습니다 (> 80.000 ID를)과 같은 최종 생성 문 출력합니다 모든 ID를, 때문에 다음 생성 된 SQL 문, DB2 너무 복잡해진다 :
SELECT new MyDTO(e.objID) FROM Entity e WHERE e.objId IN (1,2,3,4,5,6,7,...) GROUP BY e.attr1, e.attr2
인가가 이런 종류의 쿼리를 처리하는 좋은 방법이 있습니까? 가능한 임시 해결책은 임시 테이블에 ID를 작성한 다음이 테이블의 IN 절을 사용하는 것입니다.
JPA는 실제로 "몇 가지"레코드 (여전히 많이있을 수 있음)에 대해 더 많이 고안되었으며 크기 설정은 그렇지 않습니다. 한 번에 그 많은 기록들을 엉망으로 만들고있는 당신은 무엇을하고 있습니까? 가입 할 테이블에 일괄 적으로로드하는 편이 낫습니다 (기존 답변과 유사하지만 특별한 도구가 있습니다). –