2012-11-26 42 views
9

Tôi muốn thực hiện tìm kiếm một chuỗi cụ thể bắt đầu bằng một bảng chữ cái cụ thể. Vì vậy, ví dụ: nếu bảng chữ cái bắt đầu là 'A' thì nó sẽ tạo ra kết quả chứa tất cả các chuỗi có bảng chữ cái 'A'.Cách viết truy vấn tương tự trong HQL

Làm cách nào để đạt được điều này?

truy vấn của tôi là như hình dưới đây

Query qry = session.createQuery("From RegistrationBean as rb where rb."+searchCriteria+" like %?%"); 
qry.setString(0,searchField); 
+0

Và 'like' không hoạt động với bạn? –

+0

không có vấn đề gì với truy vấn của tôi. Truy vấn qry = session.createQuery ("Từ RegistrationBean là rb nơi rb." + SearchCriteria + "like%?%") qry.setString (0, searchField); – Ni3

+0

[Bạn đã thử gì?] (Https://whathaveyoutried.com) Vui lòng đăng những gì bạn có cho đến nay trong câu hỏi. – Keppil

Trả lời

9

Bạn có thể sử dụng các tiêu chí cho việc sử dụng như

session = sessionFactory.openSession(); 
Criteria query = session.createCriteria(Pojo.class); 
query.add(Restrictions.like("column", "a", MatchMode.START)); 

Nó sẽ cung cấp cho bạn danh sách các chuỗi mà bắt đầu bằng cách alpha-bate 'a'.

18

Thay đổi truy vấn của bạn như thế này:

Query qry = session.createQuery("From RegistrationBean as rb where rb."+searchCriteria+" like ?"); 
qry.setString(0, "%"+searchField+"%"); 
1
Query qry = session.createQuery("From RegistrationBean as rb where rb."+searchCriteria+" like :sf"); 
qry.setString("sf",'%'+searchField+'%'); 

Điều trên làm việc cho tôi :)

+0

Điều này dễ bị tấn công với SQL Injection. –

3

Bằng cách này

createQuery("from RegistrationBean as rb where rb.:searchCriteria like '%:searchField%'"); 
+1

@ Ni3 Làm thế nào về điều này. –

+1

Bạn có nghe nói gì về việc tiêm SQL không? http://en.wikipedia.org/wiki/SQL_injection Người ta phải sử dụng tham số ràng buộc để tránh nó. –

+0

Liên kết này không có gì với hibernate và hql. –

6

Thay đổi để

Query qry = session.createQuery("From RegistrationBean as rb where rb "; 
if (searchField != null) 
{ 
    qry = qry + " where rb.searchCriteria like :searchField "; 
} 
if (searchField!= null) 
{ 
    query.setString("searchField","%"+searchField+"%"); 
} 
Các vấn đề liên quan