Spring JPA Dépôt de requête dynamique

Actuellement, j'ai été en utilisant, au Printemps suivant, JPA Référentiel de la base de la requête personnalisée et il fonctionne très bien,

 @Query("SELECT usr FROM User usr  WHERE usr.configurable = TRUE "
              + "AND (" +
                        "lower(usr.name) like lower(:filterText) OR lower(usr.userType.classType.displayName) like lower(:filterText) OR lower(usr.userType.model) like lower(:filterText)"
              +      ")"
              + "")
  public List<User> findByFilterText(@Param("filterText") String filterText, Sort sort);

J'ai besoin de modifier cette requête lorsque le filtre de texte va être une valeurs séparées par des virgules. Mais comme la manière suivante ce sera une requête dynamique et comment puis-je exécuter.

Requête dynamique j'ai besoin de construire,

String sql = "SELECT usr FROM User usr WHERE usr.configurable = TRUE";

for(String word : filterText.split(",")) {
                sql += " AND (lower(usr.name) like lower(:" + word + ") OR lower(usr.userType.classType.displayName) like lower(:" + word + ") OR lower(usr.userType.model) like lower(:" + word + "))";
}
regarder dans JpaSpecificationExecutor
Fournir une implémentation pour votre DAO, et d'exécuter cette requête dynamique de la mise en œuvre. docs.printemps.io/printemps-données/jpa/docs/current/reference/html/.... Le DAO ne devraient pas se déchirer. Il devrait prendre une List<String> ou<String> comme argument. L'appelant doit composer avec la séparation.

OriginalL'auteur Channa | 2015-05-25