Hibernate自定义查询SQL得到对象进行更新时遇到的问题

先发段代码

SQLQuery query = this.getSession().createSQLQuery("SELECT COUNT(1) AS exponent, TO_NUMBER(TO_CHAR(VISITTIME, 'MM')) AS mm " +
                " FROM XFINFO " +
                " WHERE TO_CHAR(VISITTIME, 'YYYY') = ? " +
                " GROUP BY TO_CHAR(VISITTIME, 'MM')")
                .setResultTransformer(Transformers.aliasToBean(SerieDto.class));
               
        query.setParameter(0, start);
        @SuppressWarnings("unchecked")
        List<SerieDto> ss = query.list();
        return ss;

这个简单的查询,我想是人都会但是坑爹就坑爹在hibernate,刚开始用.addEntity(SerieDto.class)一直报unknown entity。然后用上面这个,又报属性找不到,不知道为什么坑爹的要我把所有属性都改成大写,我一直知道hibernate对数字返回的不是整形而是BigDecimal,这次能大小写都不放,一个简单的查询来回改许多次折腾了半天。后来发现要是想写自定义SQL还得自己转属性,如:query.addScalar("mm", Hibernate.FLOAT);,但有一个问题需要注意,这种写法查询出来的对象不是hibernate认为hibernate对象,也就是如果对这个对象用set方法,然后再用updateorsave进行更新时,会出现问题。

你可能感兴趣的:(Hibernate,自定义SQL)