2010-04-30 77 views
8

Im đối mặt với sự cố đơn giản với các thực thể tìm kiếm theo một số chuỗi (phụ) mà chúng có thể chứa.Chuỗi tìm kiếm JPQL (JPA) tìm kiếm

Ví dụ: Tôi có người dùng user1, usr2, useeeer3, user4 và tôi sẽ nhập vào cửa sổ tìm kiếm "sử dụng" và tôi hy vọng sẽ trả về user1, useeer3, user4.

Chắc chắn bạn biết ý tôi muốn nói. Có bất kỳ công trình nào trong JPA (JQPL) không? Nó sẽ là tốt đẹp để tìm kiếm bằng cách sử dụng WHERE bằng cách nào đó trong các truy vấn được đặt tên. Một cái gì đó như "SELECT u FROM User u WHERE u.nickname chứa: substring"

Trả lời

13

Sử dụng biểu thức LIKE. Dưới đây là một trích dẫn từ phần 4.6.9 Giống như biểu của JPA 1.0 spec (JSR 220):

Cú pháp cho việc sử dụng các nhà điều hành so [NOT] LIKE trong một biểu thức điều kiện là như sau:

string_expression [NOT] LIKE pattern_value [ESCAPE escape_character] 

string_expression phải có giá trị chuỗi . Các pattern_value là một chuỗi chữ hoặc một tham số đầu vào chuỗi giá trị trong đó một dấu gạch dưới (_) là viết tắt cho bất kỳ nhân vật duy nhất, một phần trăm (%) nhân vật đại diện cho bất kỳ chuỗi các ký tự (bao gồm cả chuỗi rỗng ) và tất cả các ký tự khác tự đứng lên. Các escape_character tùy chọn là một chuỗi đơn ký tự chữ hoặc một tham số đầu vào nhân vật có giá trị (ví dụ: char hoặc Character) và là sử dụng để thoát khỏi ý nghĩa đặc biệt của gạch dưới và phần trăm nhân vật trong pattern_value.

Ví dụ:

  • address.phone NHƯ '12% 3' là đúng đối với '123' '12.993' và sai cho '1234'
  • asentence.word LIKE 'l_se 'là đúng đối với 'mất' và sai cho 'lỏng'
  • aword.underscored LIKE '\ _%' ESCAPE '\' là đúng đối với '_foo' và sai cho 'bar'
  • address.phone KHÔNG THÍCH '12% 3' là sai cho '123' và '12.993' và đúng cho '1234'

Nếu giá trị của các string_expression hoặc pattern_valueNULL hoặc không xác định, giá trị của biểu thức LIKE LIKE không xác định. Nếu số escape_character được chỉ định và là NULL, thì giá trị của biểu thức LIKE không xác định.

+0

Cảm ơn rất nhiều :-) – JavaBeginner

Các vấn đề liên quan