2017-02-06 2 views
2

Есть ли способ ввести свойство Entity динамически в @Query? Мне нужно реализовать такой метод, как:Имя столбца в качестве параметра для Spring Data JPA Query

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

Любые другие простые способы сделать это?

ответ

2

Вы можете сделать это с использованием спецификации Spring.

Вашего метод спецификация будет похож на следующем:

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

Смежные вопросы