`

createSQLQuery,addScalar列名用大写

阅读更多
createSQLQuery,addScalar列名用大写


public List findByGroupByMaterial(String date1,String date2){ 
        try { 
            StringBuffer hql = new StringBuffer(); 
            hql.append("SELECT t.mt_material_id ID, ") 
                .append(" t1.name mt_name, ") 
                .append(" t1.code MT_CODE, ") 
                .append(" SUM(t.num)NUM, ") 
                .append(" SUM(decode((SELECT substr(s.code, ") 
                .append(" 0, ") 
                .append(" 3) ") 
                .append(" FROM im_affair_type s ") 
                .append(" WHERE s.id = t.im_affair_type_id), ") 
                .append(" 'imp', ") 
                .append(" 1, ") 
                .append(" 'exp', ") 
                .append(" -1) * t.num * t.price) MONEY ") 
                .append("FROM im_affair t, ") 
                .append(" mt_material t1 ") 
                .append("WHERE t.mt_material_id = t1.id AND ") 
                   
                .append(" To_date('"+date1+"', ") 
                .append(" 'yyyy-mm-dd') <= ") 
                .append(" t.accountant_date AND ") 
                .append(" t.accountant_date >= ") 
                .append(" To_date('"+date2+"', ") 
                .append(" 'yyyy-mm-dd') ") 
                   
// .append(" t.accountant_date BETWEEN ") 

// .append(" To_date('"+date1+"', ") 

// .append(" 'yyyy-mm-dd') AND ") 

// .append(" To_date('"+date2+"', ") 

// .append(" 'yyyy-mm-dd') ") 

                .append("GROUP BY t.mt_material_id, ") 
                .append(" t1.NAME, ") 
                .append(" t1.code "); 
               
            List list = session.createSQLQuery(hql.toString()) 
            .addScalar("ID", Hibernate.LONG)//这里ID要用大写才对,不然会报列名错误 

            .addScalar("MT_NAME", Hibernate.STRING)// 

            .addScalar("MT_CODE", Hibernate.STRING) 
            .addScalar("NUM", Hibernate.DOUBLE) 
            .addScalar("MONEY", Hibernate.DOUBLE)//同上,都要大写 

            .list(); 
            log.info("findByGroupByMaterial successful and the list size is "+list.size()); 
            return list; 
        } catch (HibernateException e) { 
            // TODO Auto-generated catch block 

            e.printStackTrace(); 
            throw e; 
        } 
    } 


分享到:
评论
1 楼 fuwang 2009-02-16  
我这里不用大写?为什么?难道是因为我用的oracle?你用的mysql

相关推荐

    hibernate 的createSQLQuery的几种用法

    Double max = (Double) sess.createSQLQuery("select max(cat.weight) as maxWeight from cats cat").addScalar("maxWeight", Hibernate.DOUBLE).uniqueResult(); ``` 这个查询返回了 cats 表中 weight 列的最大值。...

    关于hibernate 的createQuery和createSqlQuery 的区别

    Hibernate 中的 createQuery 和 createSqlQuery 区别详解 ...此外,createQuery 方法使用 HQL 语句,而 createSqlQuery 方法使用原生态的 SQL 语句。因此,在选择使用哪种方法时,需要根据实际情况进行考虑。

    Native SQL查询 (使用SQLQuery).doc

    使用 SQLQuery 可以执行 Native SQL 查询,控制查询的执行是通过 SQLQuery 接口进行的,可以使用 addScalar() 方法指定返回值的类型,也可以使用 addEntity() 方法让原生查询返回实体对象,另外还可以使用 addJoin()...

    hibernate3中通过nativesql或取部分字段并映射为具体对象的实现

    要执行原生SQL查询,可以使用`Session`对象的`createSQLQuery()`方法: ```java Session session = HibernateUtil.getSessionFactory().openSession(); SQLQuery query = session.createSQLQuery("SELECT id, name ...

    Hibernate中Sql语句

    在本例中,使用了`addScalar`方法指定结果集中的列名及其对应的Java类型,并使用`setResultTransformer`设置结果转换器为`Transformers.aliasToBean(SumPlace.class)`。 ```java query1.addScalar("productSum", ...

    Native-SQL查询 (1).ppt

    当SQL查询的结果包含部分实体属性时,可以使用`addScalar()`方法指定列与对象属性的映射。比如,以下代码展示了如何将SQL查询的结果映射到`Guestbook`对象的特定字段: ```java String sql = "select id, name, ...

    Query对象setResultTransFormer()

    在上面的代码中,我们使用 setResultTransformer() 方法将查询结果转换为 Map 对象,然后使用 addScalar() 方法将 SUMID 字段转换为 Integer 类型。 setResultTransformer() 方法是 Query 对象的一个重要方法,可以...

    Hibernat使用原生的SQL

    - **类型转换**: Hibernate不会自动将查询结果转换为对象,需要使用addScalar()或addEntity()指定映射规则。 - **SQL优化**: 考虑到性能,尽量避免过多使用原生SQL,因为这可能会丢失ORM的一些好处,如缓存、连接池...

    Hibernate3调用存储过程用法

    如果存储过程有返回值,可以使用addScalar方法指定返回值类型并映射到Java对象。如果返回多条记录,可以使用list方法获取结果集。例如: ```java query.addScalar("returnColumn", Hibernate.INTEGER); List...

    Hibernate+本地SQL查询SQLQuery宣贯.pdf

    在某些情况下,开发者可能需要使用原生SQL查询来执行特定的数据库操作,这时就可以利用Hibernate的SQLQuery功能。本文将详细讲解如何使用Hibernate的SQLQuery进行本地SQL查询。 首先,创建SQLQuery实例是通过...

    Hibernate+本地SQL查询SQLQuery.pdf

    在Java的持久化框架Hibernate中,有时我们需要使用原生的SQL查询来实现特定的数据库操作,这时就需要利用到SQLQuery接口。本篇文章将详细解析如何使用Hibernate的SQLQuery来进行本地SQL查询,并探讨其各种应用场景。...

    hibernate将本地SQL查询结果封装成对象

    然后,我们可以使用`Session.createSQLQuery()`方法创建一个本地SQL查询对象,并设置查询语句: ```java Session session = sessionFactory.openSession(); String sql = "SELECT * FROM my_table WHERE ..."; SQL...

    在Java的Hibernate框架中使用SQL语句的简单介绍

    在Java的Hibernate框架中,使用SQL语句是一个常见的需求,特别是在处理特定的数据库操作或优化查询性能时。Hibernate,作为SSH(Spring、Struts、Hibernate)三大Web开发框架之一,提供了一种优雅的方式将对象关系...

    hibernate存储过程

    - 使用`Session.createSQLQuery()`方法创建SQLQuery对象,然后通过`addScalar()`指定返回值类型,`executeUpdate()`或`list()`执行存储过程。 3. **调用存储过程的方法** - **简单调用**:对于无参数或只接收输入...

    Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法

    首先,可以通过调整Hibernate的映射方式,使用`addScalar`方法显式指定字段的类型;其次,可以在SQL查询中使用`CAST`函数将char字段转换为`VARCHAR2`类型;最后,也可以考虑直接修改数据库表结构,将char类型改为`...

    hibernate调用存储过程

    Hibernate提供两种调用存储过程的方法:使用`Session.createSQLQuery()`和使用`StoredProcedureQuery`。 - **使用`Session.createSQLQuery()`** 这种方法适用于简单的存储过程调用。你可以构建一个SQL查询字符串...

    hibernate执行原生sql语句

    在上面的代码中,我们使用 `Session.createSQLQuery()` 方法创建了一个 `SQLQuery` 对象,然后使用 `addEntity()` 方法指定了查询结果的实体类型,最后使用 `list()` 方法执行查询并获取结果。 使用 ...

Global site tag (gtag.js) - Google Analytics