JPQL IN 절: 배열, 목록 및 기타 컬렉션 언롤링
JPQL(Java Persistence Query Language)에서 IN 절을 사용하면 비교할 특정 값 목록을 지정합니다. 그러나 값을 개별적으로 나열하는 대신 값 모음을 비교해야 한다면 JPQL에서 이를 수행할 수 있는 방법이 있는지 궁금할 것입니다.
답변:
예, JPA 2.0 이상에서는 개별 값으로 전개되도록 IN 절에 컬렉션을 지정할 수 있습니다. 이렇게 하려면:
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);
예:
EclipseLink의 다음 예는 이름이 "foo" 또는 "bar"와 일치하는 모든 Item 개체를 검색합니다.
String qlString = "select item from Item item where item.name IN :names"; Query q = em.createQuery(qlString, Item.class); Listnames = 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!