tôi đã xác định ContactDao của tôi như sau:Có thể thêm ký tự đại diện vào tham số @Query không?
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);
}
Trên đây đang làm việc một cách hoàn hảo, và SQL được tạo ra là những gì tôi muốn viết bản thân mình. Vấn đề là tôi muốn thêm các thẻ hoang dã xung quanh vào tham số :name
. Có cách nào tốt đẹp để làm điều này? Tôi đã xem tài liệu tham khảo dữ liệu mùa xuân JPA và tôi không thể tìm thấy bất cứ điều gì liên quan đến hoang dã và @query
.
Các công trình Hack sau, nhưng là một chút xấu xí:
and lower(c.fullName) like '%' || lower(:name) || '%'
Có ai có một giải pháp tốt hơn?
Cảm ơn, Muel.
Một lưu ý nhỏ bên ngoài chủ đề trong trường hợp bất kỳ tác giả _Spring Data_ nào về .. :) Có lẽ loại tính năng này (có ký tự đại diện) có thể được thêm vào '@ Param'; ví dụ '@Param (giá trị =" tên ", wildcardStategy = WildcardStrategy.BOTH)'. Phải thừa nhận rằng, tôi đã đưa ra suy nghĩ này rất ít, vì vậy có lẽ có những tranh luận mạnh mẽ chống lại nó! – Muel
Đó thực sự là một hack? –