Criteria setResultTransformer报错或者结果为空实体的解决方案

直接上代码:

@Test
    public void test0001() {
        DetachedCriteria criteria = DetachedCriteria.forClass(ReportTinyRequest.class);
        criteria.add(Restrictions.le("this.requestNo", 29));
        // alias名字不能与原有名字相同,不然Hibernate会用alias去选择查询,生成一个错误的SQL.
        // 但通常我们都需要它们名字相同,这里也不能不指定alias名字,
        // 这种情况下请在Restrictions中的propertyName里加上this. 如:Restrictions.le("this.requestNo", 29)
        criteria.setProjection(Projections.projectionList().add(Projections.property("requestNo"), "requestNo")
        // 如果没有alias名字,则结果会返回相同个数但实体全部属性值为NULL的集合
                .add(Projections.property("entryName"), "entryName"));//
        // Transformers.ALIAS_TO_ENTITY_MAP //把输出结果转换成map
        // Transformers.TO_LIST //把结果按顺序排进List
        // Transformers.aliasToBean(target)//把结果通过setter方法注入到指定的对像属性中
        // 默认或者 criteria.setResultTransformer(CriteriaSpecification.PROJECTION)将把结果转成List<Object[]>
        // CriteriaSpecification.ALIAS_TO_ENTITY_MAP CriteriaSpecification.DISTINCT_ROOT_ENTITY
        criteria.setResultTransformer(Transformers.aliasToBean(TinyVo.class));//
        // criteria.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
        Session session = HibernateUtils.getSessionDW();
        List<?> list = criteria.getExecutableCriteria(session).list();
        System.out.println(list);
    }

 

你可能感兴趣的:(transform)