> 데이터 베이스 > MySQL 튜토리얼 > JPQL의 IN 절이 컬렉션을 직접 처리할 수 있나요?

JPQL의 IN 절이 컬렉션을 직접 처리할 수 있나요?

Susan Sarandon
풀어 주다: 2024-12-28 19:06:11
원래의
940명이 탐색했습니다.

Can JPQL's IN Clause Handle Collections Directly?

JPQL IN 절: 배열, 목록 및 기타 컬렉션 언롤링

JPQL(Java Persistence Query Language)에서 IN 절을 사용하면 비교할 특정 값 목록을 지정합니다. 그러나 값을 개별적으로 나열하는 대신 값 모음을 비교해야 한다면 JPQL에서 이를 수행할 수 있는 방법이 있는지 궁금할 것입니다.

답변:

예, JPA 2.0 이상에서는 개별 값으로 전개되도록 IN 절에 컬렉션을 지정할 수 있습니다. 이렇게 하려면:

  1. JPQL 쿼리 정의: IN 절과 명명된 매개변수를 사용하여 JPQL 쿼리를 만듭니다. 예:
String qlString = "select item from Item item where item.name IN :names";
로그인 후 복사
  1. 컬렉션 생성: Java 컬렉션 생성 (예: 목록 또는 집합) 확인하려는 값이 포함되어 있습니다.
  2. 매개변수 설정: 컬렉션을 값으로 전달하려면 Query 개체에서 setParameter() 메서드를 사용하세요. 명명된 매개변수:
Query q = em.createQuery(qlString, Item.class);
List<String> names = Arrays.asList("foo", "bar");
q.setParameter("names", names);
로그인 후 복사

예:

EclipseLink의 다음 예는 이름이 "foo" 또는 "bar"와 일치하는 모든 Item 개체를 검색합니다.

String qlString = "select item from Item item where item.name IN :names";
Query q = em.createQuery(qlString, Item.class);

List names = Arrays.asList("foo", "bar");

q.setParameter("names", names);
List actual = q.getResultList();

assertNotNull(actual);
assertEquals(2, actual.size());
로그인 후 복사

참고사항 Hibernate:

Hibernate 4 이전에는 JPQL 쿼리에서 매개변수를 괄호로 묶어야 합니다.

String qlString = "select item from Item item where item.name IN (:names)";
로그인 후 복사

그러나 이것은 Hibernate 전용 확장이며 그렇지 않습니다. 표준 JPQL 구문의 일부입니다.

위 내용은 JPQL의 IN 절이 컬렉션을 직접 처리할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿