[SQL] JPQL IN 절 : 자바 배열 (또는 목록, 설정 ...)?
SQLJPQL IN 절 : 자바 배열 (또는 목록, 설정 ...)?
나는 우리의 데이터베이스에서 값의 작지만 임의의 수의에 텍스트 태그가 설정되어 모든 객체를로드하고 싶습니다. SQL 이것에 대해 갈 수있는 논리적 방법은 "IN"절을 구축하는 것입니다. ( "IN2 : : 입방인치) : IN1 (에"에서와 같이) JPQL은 IN이 가능하지만, 직접 IN에 모든 단일 매개 변수를 지정하라고 요구하는 것 같다.
배열, 또는 IN 절의 값으로 풀려해야 목록 (또는 다른 컨테이너)을 지정하려면 어떤 방법이 있습니까?
해결법
-
==============================
1.나는 JPA 1.0 모르겠어요하지만 당신은 JPA 2.0에서 컬렉션을 전달할 수 있습니다 :
나는 JPA 1.0 모르겠어요하지만 당신은 JPA 2.0에서 컬렉션을 전달할 수 있습니다 :
String qlString = "select item from Item item where item.name IN :names"; Query q = em.createQuery(qlString, Item.class); List<String> names = Arrays.asList("foo", "bar"); q.setParameter("names", names); List<Item> actual = q.getResultList(); assertNotNull(actual); assertEquals(2, actual.size());
은 EclipseLink와 테스트. 최대 절전 모드 3.5.1로, 당신은 괄호와 함께 매개 변수를 둘러싸고해야합니다 :
String qlString = "select item from Item item where item.name IN (:names)";
그러나 이것은 버그, 이전 샘플에서 JPQL 쿼리는 유효 JPQL입니다. 참조 HHH-5126.
-
==============================
2.오라클 제한은 1000 개 매개 변수입니다. 이 문제는 비록 분할하여 버전 4.1.7에서 최대 절전 모드 500 세트에 전달 된 매개 변수 목록을 해결되었습니다 참조 JIRA HHH - 1123
오라클 제한은 1000 개 매개 변수입니다. 이 문제는 비록 분할하여 버전 4.1.7에서 최대 절전 모드 500 세트에 전달 된 매개 변수 목록을 해결되었습니다 참조 JIRA HHH - 1123
from https://stackoverflow.com/questions/2772305/jpql-in-clause-java-arrays-or-lists-sets by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL보기 : 전체 이름 필드에서, 첫 번째 중간 이름과 성을 구문 분석 (0) | 2020.04.18 |
---|---|
[SQL] 어떻게 저장 프로 시저에서 여러 행을 반환? (오라클 PL / SQL) (0) | 2020.04.17 |
[SQL] 영구적으로 설정 PostgreSQL을 스키마 경로 (0) | 2020.04.17 |
[SQL] 범위 경계를 포함하는 "사이"합니까 MS SQL 서버? (0) | 2020.04.17 |
[SQL] 단지 SQL을 사용하여 SQL Server 2005의 이미지 필드에 그림 삽입 (0) | 2020.04.17 |