2009-10-06 1 views
3

질의를위한 Hibernate (3.2) Criteria를 사용하고 있으며리스트로 변환 할 때 예외가된다.Hibernate Criteria 질의 - 클래스 캐스트 예외

아래에있는 내 코드와 예외를 참조하십시오

List<Summary> summaryList; 
    Criteria criteria = session.createCriteria(Summary.class); 
    session.beginTransaction(); 
    summaryList = Criteria.setProjection(
     Projections.projectionList().add(Projections.sum("contractDollar")) 
     .add(Projections.groupProperty("department"))).list() ; 

예외 : java.lang.ClassCastException가 : [Ljava.lang.Object; com.abc.model.Summary

결과가 내 POJO로 (요약)

당신이 좀 도와 주 시겠어요 그것을 규정에도 불구하고 '객체'로 반환됩니다 이유는 확실하지 않다 캐스트 할 수없는 . 나는 동면하는 초보자입니다.

감사합니다. Raja.

+0

당신이의 ResultTransformer를 지정 했습니까? –

답변

3

Summary 결과에 반환하려는 매핑 된 엔터티 또는 빈이 있습니까? 둘 다있을 수 없습니다. 엔티티 클래스를 session.createCriteria()에 전달해야합니다.

  1. 이 요약 클래스 (또는 결과 콩이 다르다 경우)에 적절한 세터 유무 :

    은 지금까지 결과가 가서, 당신은 할 필요가있다.
  2. 투영의 별칭을 지정하십시오.
  3. 'aliasToBean'결과 변환기를 지정하십시오.

귀하의 기준 코드가 될 것이다 :

summaryList = Criteria.setProjection(
Projections.projectionList() 
    .add(Projections.sum("contractDollar"), "contractSum") 
    .add(Projections.groupProperty("department")) 
) 
.setResultTransformer(Transformers.aliasToBean(Summary.class)) 
.list() ; 

귀하의 Summary 콩이 예에서 setContractSum() 방법이 있어야합니다.

+0

오래된 질문이지만이 줄은 황금색입니다 :'.setResultTransformer (Transformers.aliasToBean (Summary.class))' – cowls

2

나는 Summary가 있지만 시도 무엇 확실하지 않다 :

Criteria criteria = session.createCriteria(Summary.class); 
Transaction tx = session.beginTransaction(); 
summaryList = criteria.setProjection(
    Projections.projectionList().add(Projections.sum("contractDollar")) 
     .add(Projections.groupProperty("department"))).list() ; 

Object[] result = criteria.list().get(0); 
// result[0] holds the sum of contractDollar 

tx.commit();