2012-03-15 5 views
3

SQLQuery에 정수 목록을 전달하려고합니다. 내가 뭘 잘못리스트의 조건을 가진 Hibernate SQLQuery

List<Integer> ids = new ArrayList<Integer>(5); 
//Fill something in ids 
return session.createSQLQuery("select igf.foo_id from group_feed igf where igf.id in (:ids)") 
    .setMaxResults(pageSize) 
    .setParameterList("ids", ids) 
    .setResultTransformer(Transformers.aliasToBean(GroupFeed.class)) 
    .list(); 

: 그러나 그것은 "Exception : could not locate named parameter [ids]; nested exception is org.hibernate.QueryParameterException: could not locate named parameter [ids]"

이 내 쿼리 모습입니다라는 오류가 발생합니다? setParameterListHibernate SQLQuery을 사용할 수 없습니까? 나는 jBoss에서 Hibernate의 문서를 많이 만들 수 없었다.

답변

-1
List<Integer> ids = new ArrayList<Integer>(5); 

은 5 슬롯 용량 빈 목록을 생성합니다 :

ids {null, null, null, null, null} 

for (Integer i : ids) { 
      System.out.println("" + i); 
} 

아무것도 인쇄하지 않을 것입니다. 목록이 비어 있습니다.

목록이 하나 이상의 항목으로 가득 찼습니까?

return session.createSQLQuery("select igf.foo_id from group_feed igf where igf.id in (:ids)") 
.setMaxResults(pageSize) 
.setParameterList("ids", ids) 
.setResultTransformer(Transformers.aliasToBean(GroupFeed.class)) 
.list(); 

가 나는 그것이 (:ids) 때문에 Hibernate:ids 인식하지 못합니다 생각 :

방법 Hibernate 난 당신이 생각합니다 매개 변수를 보인다.

+0

여전히 동일합니다. 예외 : "예외 : 명명 된 매개 변수 [ids]를 찾을 수 없습니다." . 나는 이것이 'ids'데이터가 발견되지 않는다는 사실을 의미한다고 생각합니다. –

+0

여기에 초기화 코드를 넣고 싶지 않았기 때문에이 주석을 넣습니다. -> // ID로 무엇인가 채우십시오. 나는 @ Vikram이 옳다고 말하는 것을 추측한다. –

+0

당신이 원하지 않는 것을 이해합니다 :) – ssedano

관련 문제