he definido mi ContactDao de la siguiente manera:¿Es posible agregar comodines a los parámetros @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);
}
Lo anterior está funcionando perfectamente, y el SQL generado es lo que me gustaría escribir mi mismo. El problema es que me gustaría agregar comodines circundantes al parámetro :name
. ¿Hay alguna buena manera de hacer esto? He echado un vistazo al documento de referencia de Spring Data JPA y no encuentro nada relacionado con wildards y @query
.
Las siguientes obras de hackers, pero es un poco feo:
and lower(c.fullName) like '%' || lower(:name) || '%'
¿Alguien tiene una solución mejor?
Gracias, Muel.
Una nota lateral ligeramente fuera de tema en caso de que _Spring Data_ authors estén a punto :) :) Tal vez este tipo de característica (delimitar con comodines) podría agregarse a '@ Param'; por ejemplo '@Param (value =" name ", wildcardStategy = WildcardStrategy.BOTH)'. Es cierto que he pensado muy poco, ¡así que probablemente haya fuertes argumentos en contra de eso! – Muel
¿Es realmente un truco? –