J'ai défini mon ContactDao comme suit:Est-il possible d'ajouter des caractères génériques aux paramètres @Query?
public interface ContactDao extends JpaRepository<Contact, Long> {
/**
* Finds all contacts that the given user has entered where the contact's full name matches {@code name}.
* @param userId The current user's LDAP id.
* @param name The name to search for.
* @return A list of contacts matching the specified criteria.
*/
@Query(" select c from Form as f" +
" inner join f.contacts as c" +
" where f.requestorUserId = :userId" +
" and lower(c.fullName) like lower(:name)" +
" order by lower(c.fullName)")
List<Contact> findUserContactsByUserIdAndName(@Param("userId") String userId, @Param("name") String name);
}
Le fonctionne parfaitement au-dessus, et le SQL généré est ce que j'écris moi-même. Le problème est que je voudrais ajouter des wild-cards environnantes au paramètre :name
. Y a-t-il un bon moyen de le faire? J'ai regardé le document de référence Spring Data JPA et je ne trouve rien concernant les wildards et @query
.
Les travaux de hack, mais est un peu laid:
and lower(c.fullName) like '%' || lower(:name) || '%'
Quelqu'un at-il une meilleure solution?
Merci, Muel.
Une note légèrement hors-sujet au cas où des auteurs _Spring Data_ sont sur .. :) Peut-être ce genre de fonctionnalité (entourant avec des caractères génériques) pourrait être ajouté à '@ Param'; par exemple '@Param (value =" nom ", wildcardStategy = WildcardStrategy.BOTH)'. Certes, je l'ai très peu réfléchi, donc il y a probablement de forts arguments contre! – Muel
Est-ce vraiment un hack? –