`
zgqynx
  • 浏览: 1355453 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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 楼 piao_live 2008-05-29  
这位兄弟说得太对了。。。

相关推荐

    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...

    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()` 方法执行查询并获取结果。 使用 ...

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

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

Global site tag (gtag.js) - Google Analytics