2012-06-28 26 views
7

Tôi có một chuỗi truy vấn dọc theo dòng:Hibernate - tôi có thể trộn các tham số có tên và vị trí không?

session.createSQLQuery("SELECT C.FIRSTNAME AS firstName, C.LASTNAME as lastName FROM ADDRESSBOOK_CONTACT AS C WHERE C.ADDRESSBOOK_ID = :addressbookId AND firstName = ?"); 

Khi cài đặt tham số vị trí của tôi, các truy vấn được chạy như bình thường nhưng không có kết quả:

query.setParameter(0, "firstname1010"); 
query.setParameter("addressbookId", addressbook.getId()); 

Đó là sai. Nếu tôi thay đổi vị trí của mình thành tên:

query.setParameter(firstname, "firstname1010"); 

Sau đó truy vấn của tôi trả lại kết quả chính xác.

Nếu không đi vào một giải thích phức tạp về lý do tại sao tôi làm điều này, tôi muốn biết nếu trộn hai loại nên được hỗ trợ hay không? Tôi đang sử dụng chế độ ngủ đông 3.6.3.Final

Trả lời

5

Từ các tài liệu mức lớp trên org.hibernate.Query:

Bạn không thể trộn và các thông số phù hợp với JDBC kiểu và đặt tên các tham số trong cùng một truy vấn.

Vì vậy, hành vi mà bạn đang thấy là hoàn toàn mong đợi.

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