2017-12-09 9 views
0

나는 같은 조건으로 동적 쿼리를 작성하려고합니다. MySQL을 원시 SQL과 함께 사용하면 매우 잘 동작합니다. 다음은 예제입니다.JPA/기준 백분율 문자처럼

select * from dbiwant.want_activity m where m.want like "%bike%" 

그런 다음 CriteriaBuilder로 시도했지만 Java에서 동일한 결과를 얻지 못했습니다. 그냥 빈 결과. 내 코드는 다음과 같습니다.

Specifications specifications = Specifications.where(specificationService.isLike("want", search)); 


public Specification<WantActivity> isLike(String param, String search) { 
     return new Specification<WantActivity>() { 
      public javax.persistence.criteria.Predicate toPredicate(Root<WantActivity> root, CriteriaQuery<?> query, 
                    CriteriaBuilder builder) { 
       return builder.like(root.get(param) ,"%" + search + "%"); 
      } 
     }; 
} 

문제점 :

답변

0

이 시도 : 작동하지

public Specification<WantActivity> isLike(String param, String search) { 
    return new Specification<WantActivity>() { 
     public javax.persistence.criteria.Predicate toPredicate(Root<WantActivity> root, CriteriaQuery<?> query, 
                   CriteriaBuilder builder) { 

final Predicate like = query.where(builder.like(root.<String> get(param), search)).getRestriction(); 
return like; 
     } 
    }; 
+0

. 아직 결과가 비어 있습니다. – Ahmet

+0

도움말보기 : https : //spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/ –