2017-12-09 13 views
0

私は同様の条件で動的クエリを作成しようとしています。私はraw SQLをmysqlに入れてみると、とてもうまく動作しました。ここに例があります:JPA/Criteria Likeパーセント文字

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/ –

関連する問題