2013-08-10 15 views
5

tôi nhận được hành vi cực kỳ lạ ra khỏi JPA 2,0org.hibernate.QueryException: Không phải tất cả các thông số tên đã được thiết lập: []

Tôi đang cố gắng để xây dựng một truy vấn mà trông thích, nơi employeId và empDepartment là những giá trị dài đi qua lập luận java

Query query=em.createQuery("SELECT e FROM Employee e WHERE e.empId = :empId and e.empDepartment = :empDepartment"); 
query.setParameter("empId" ,employeId); 
query.setParameter("empDepartment",empDepartment); 

nhưng công việc doesnt truy vấn trên cho lần đầu tiên, nó tạo ra các lỗi trên nhưng khi thứ hai khi tôi trigged phương pháp tương tự một lần nữa tất cả mọi thứ diễn ra suôn sẻ, điều này xảy ra mỗi và mọi thời gian , điều gì có thể là lý do cho nó?

+1

Bạn có thể cho chúng tôi biết toàn bộ phương pháp mà điều này đang diễn ra không? – chrylis

+1

Bạn phải có một số câu lệnh 'if' xung quanh lệnh' query.setParameter' để dừng chúng được thực hiện lần đầu tiên. Bạn có thể đăng phương thức đầy đủ như @chrylis được đề xuất không? –

Trả lời

0

Bạn có thể thử này:

Query query=em.createQuery("SELECT e FROM Employee e WHERE e.empId = ? and e.empDepartment = ?"); 
query.setParameter(1, employeId); 
query.setParameter(2, empDepartment); 

Nếu điều này không làm việc, hoặc, hơn có thể là một vấn đề với nội dung truy vấn của bạn là tốt, không phải với việc thay đổi các thông số. Có lẽ các loại không chính xác. Kiểu tham số được suy ra theo ngữ cảnh.

+1

Xin cảm ơn câu trả lời – user2670113

0
Query query=em.createQuery("SELECT e FROM Employee e WHERE e.empId=:empId and e.empDepartment=:empDepartment"); 

query.setParameter("empId" ,employeId); 
query.setParameter("empDepartment",empDepartment); 

Tôi không biết lý do là gì, nhưng điều đó đã xảy ra với tôi một lần. Hãy thử nó như thế này. Chỉ cần xóa khoảng trắng giữa =: empId và tham số khác.

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