JPA에서 setParameter에% (와일드카드 문자) 의 like 문장을 포함합니다
딱한 사정
이러한 SQL을 수행하려는 경우
SQL
select * from user where user.name like '%keyword%';
JPQL로 쓰면 이런 느낌이 들어요.JPQL
TypedQuery<User> query = entityManager.createQuery("SELECT u FROM User u WHERE u.name LIKE %:keyword%");
query.setParameter("keyword", keyword);
아니면 석영으로 둘러싸면 이런 느낌.JPQL
TypedQuery<User> query = entityManager.createQuery("SELECT u FROM User u WHERE u.name LIKE '%:keyword%'");
query.setParameter("keyword", keyword);
둘 다 실행하면 다음 오류가 발생합니다.ERROR o.h.hql.internal.ast.ErrorCounter - line 1:109: unexpected token: %
antlr.NoViableAltException: unexpected token: %
해결책
이럴 때 이렇게 하면 처리하기 쉽다.
JPQL
TypedQuery<User> query = entityManager.createQuery("SELECT u FROM User u WHERE u.name LIKE :keyword");
query.setParameter("keyword", "%" + keyword + "%");
영어의 대문자와 소문자의 차이를 한층 더 흡수하고 싶다면 이렇게 할 수 있다.JPQL
TypedQuery<User> query = entityManager.createQuery("SELECT u FROM User u WHERE UPPER(u.name) LIKE UPPER(:keyword)");
query.setParameter("keyword", "%" + keyword + "%");
Reference
이 문제에 관하여(JPA에서 setParameter에% (와일드카드 문자) 의 like 문장을 포함합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/pppurple/items/2eb7e29cd0afa363647d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)