Я определил свой ContactDao следующим образом:
public interface ContactDao extends JpaRepository<Contact, Long> {
/**
* Finds all contacts that the given user has entered where the contact full name matches {@code name}.
* @param userId The current user 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);
}
Вышеизложенное работает отлично, и сгенерированный SQL - это то, что я бы написал сам. Проблема в том, что я хотел бы добавить окружающие wild-cards к параметру :name
. Есть ли хороший способ сделать это? Я посмотрел справочный документ Spring Data JPA, и я не могу найти что-либо в отношении wildards и @query
.
Следующий хак работает, но немного уродлив:
and lower(c.fullName) like '%' || lower(:name) || '%'
Есть ли у кого-то лучшее решение?
Спасибо, Muel.