2017-02-06 5 views
2

エンティティプロパティを動的に@Queryに挿入する方法はありますか?私の必要性は、次のようなメソッドを実装することです:Springデータへのパラメータとしての列名JPAクエリ

@Query("select e from #{#entityName} e where e.***columnName*** = ?2") 
List<T> findAll(String ***columnName***, String value); 

これを行う他の簡単な方法は?

答えて

2

Spring Specificationを使用して実行できます。

ご指定方法は、次の1のようになります。

public static Specification<Entity> byColumnNameAndValue(String columnName, String value) { 
    return new Specification<Entity>() { 
     @Override 
     public Predicate toPredicate(Root<Entity> root, 
       CriteriaQuery<?> query, CriteriaBuilder builder) { 
      return builder.equal(root.<String>get(columnName), value); 
     } 
    }; 
} 

仕様について少し読んでください、それは素晴らしいツールです。

https://spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/

http://docs.spring.io/spring-data/jpa/docs/current/api/org/springframework/data/jpa/domain/Specifications.html

+0

方向をありがとうございました。私はそれを使用し、仕事を終えました! – J4Priyan

関連する問題