Я определил свой ContactDao следующим образом:
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);
}
Вышеупомянутое работает отлично, и сгенерированный SQL - это то, что я написал бы сам. Проблема в том, что я хотел бы добавить окружающие дикие карты -к параметру :name
. Есть ли хороший способ сделать это? Я просмотрел справочный документ Spring Data JPA и не могу найти ничего о подстановочных знаках и @query
.
Следующий хак работает, но немного некрасиво:
and lower(c.fullName) like '%' || lower(:name) || '%'
У кого-нибудь есть лучшее решение?
Спасибо, Муэль.