2012-11-26 2 views
2
Query qry = session.createQuery("From RegistrationBean where ? = ?"); 
qry.setString(0,searchCriteria); 
qry.setString(1,searchField); 
searchList =(ArrayList<RegistrationBean>) qry.list(); 

RegistrationBean Entity 클래스가 userName, address, age 필드 .. 내가 위의 단일 쿼리 ... 을 사용하는 등 userName, address로 검색 기준으로 사용자를 검색 할 그러나 쿼리가 반환 사용자가 존재하더라도 결과는 0입니다.HQL 쿼리 데이터 회원을 바인딩

문제점 : 다음과 같은 방법으로

답변

1

두 매개 변수가 모두 0 위치로 설정되고 두 번째 매개 변수는 설정되지 않습니다. 위치 매개 변수는 순차적으로 설정해야합니다.

qry.setParameter(0,searchCriteria); 
qry.setParameter(1,searchField); 

하지만 0으로 모두 입력 한 QUES을 게시하는 동안 필드 이름은 ... 다음과 같은 방법

String queryString = "from RegistrationBean as model where model." + propertyName + "= ?"; 
Query queryObject = getSession().createQuery(queryString); 
queryObject.setParameter(0, value); 
return queryObject.list(); 
+0

죄송합니다 ... 질문을 게시하는 동안 모두 0으로 입력했습니다 ... 나를 위의 솔루션 dint 작업 ... 그것은 여전히 ​​나를 제로 결과를 반환합니다 – scanE

+0

@ user1831612 코드의 예를보세요. 매개 변수 이름은'createQuery'를 호출 할 때 전달됩니다. –

+0

Like 쿼리를 어떻게 가질 수 있습니까? 쿼리 qry = session.createQuery ("RegistrationBean에서 rb로 rb."+ searchCriteria + "% % %"); 이 나를 위해 작동하지 않습니다 – scanE

0

봅니다 :

Query qry = session.createQuery("select * from RegistrationBean where :searchCrit = :searchValue"); 
qry.setString(":searchCrit",searchCriteria); 
qry.setString(":searchValue",searchField); 
searchList =(ArrayList<RegistrationBean>) qry.list(); 

대신 인덱스를 설정하는 다음과 같이 사용하는 것이 더 적절하다 당신이 당신의 쿼리에서 뭔가를 변경하는 경우 때문에, (당신의 문제는 모두 0으로 설정이다) 나중에 설정자를 변경해야 할 수도 있습니다.

+0

유감을 전달한다 ... 나를 위해 위 솔루션 힘의 작품은 ... 그것은이다 여전히 제로 결과를 돌려줍니다. – scanE

+0

"placeHolder"유형의 자리 표시 자로 제안 된 솔루션을 매개 변수로 사용하려고 시도 했습니까? 오류가 발생하지 않았습니까? 그것은 "선택 *"이 부족하거나 "등록에서"진술 전에 무언가를 선택하는 것 같습니다. –