Можно ли добавить подстановочные знаки к параметрам @Query?

Я определил свой 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) || '%'

У кого-нибудь есть лучшее решение?

Спасибо, Муэль.

10
задан Muel 24 July 2012 в 02:05
поделиться