Hibernate条件查询-类强制转换异常

Hibernate条件查询-类强制转换异常,hibernate,criteria,Hibernate,Criteria,我使用Hibernate(3.2)标准进行查询,并在转换为列表时显示异常 请参见下面我的代码和例外: List<Summary> summaryList; Criteria criteria = session.createCriteria(Summary.class); session.beginTransaction(); summaryList = Criteria.setProjection( Projections.project

我使用Hibernate(3.2)标准进行查询,并在转换为列表时显示异常

请参见下面我的代码和例外:

    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() ;
列表摘要列表;
条件=session.createCriteria(Summary.class);
session.beginTransaction();
summaryList=Criteria.setProjection(
Projections.projectionList().add(Projections.sum(“contractDollar”))
.add(projects.groupProperty(“department”)).list();
例外情况: java.lang.ClassCastException:[Ljava.lang.Object;无法转换为com.abc.model.Summary

即使我将结果指定为我的pojo(摘要),我也不确定为什么会将其返回为“Object”

你能帮我一下吗?我是个冬眠新手

谢谢,
Raja.

摘要
您试图在结果中返回的映射实体还是bean?不应该两者都是。您需要将实体类传递到
会话.createCriteria()

就结果而言,您需要:

  • 在Summary类中有一个合适的setter(或者如果结果bean不同的话)
  • 为投影指定别名
  • 指定“aliasToBean”结果转换器
  • 您的标准代码将变为:

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

    在本例中,您的
    Summary
    bean需要有
    setContractSum()
    方法。

    我不确定
    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();
    

    旧问题,但这一行是金色的:
    .setResultTransformer(Transformers.aliasToBean(Summary.class))
    获取此错误:无法实例化ResultClasses您是否指定了ResultTransformer?