`

Hibernate 执行SQL语句的count函数返回BigDecimal类型

阅读更多

 


 当前使用的Hibernate版本是3.2.6,数据库是Oracle11g,当使用 HibernateTemplate 的execute方法执行sql语句(不是 hql 语句)查询的时候,使用count聚合函数,返回结果是 BigDecimal 类型,不是Integer也不是Long,需强转成 BigDecimal 类型,然后调用其对象的 intValue 或 longValue 方法就可以了

 

public BigDecimal getPageNumberId(){

StringBuffer strHql = new StringBuffer("select count(*) from page_model t2 where t2.id in(select max(t.id) from page_model t group by t.pagenumber_id)");

SQLQuery sql =  getSession().createSQLQuery(strHql.toString());

return (BigDecimal)sql.uniqueResult();

}

 

--------------------------------------------------------------------------------------------------------------

 

BigDecimal id =  pageModelDao.getPageNumberId();

System.out.println(id.intValue());

 

 

-----------------------------------------------------------------------------------------

与上不同的是,当调用 HibernateTemplate 的 find 方法执行 hql 时,如果hql中有 count 函数,返回的结果是 Long 类型

注:使用Criteria的count查询时返回的是Integer类型。

 

  1. public int getAlarmCountByFilter(final AlarmFilterBean filter,final int alarmCatelog) {  
  2.     return getHibernateTemplate().execute(new HibernateCallback<Integer>() {  
  3.         @Override  
  4.         public Integer doInHibernate(Session session) throws HibernateException, SQLException {  
  5.             Criteria c = session.createCriteria(ActiveAlarmBean.class);  
  6.             c.setProjection(Projections.rowCount());  
  7.             addFilterRestrictions(c,filter,alarmCatelog);  
  8.             return (Integer)c.uniqueResult();  
  9.         }  
  10.     });  
  11. }  

 

 

分享到:
评论

相关推荐

    Java数据类型,Hibernate数据类型,标准sql数据类型之间的对应表

    Hibernate使用自己的数据类型映射机制,将Java对象转化为SQL语句,以操作数据库。而SQL(结构化查询语言)是用于管理关系数据库的标准语言,它有自己的数据类型系统,如INT、VARCHAR、DATE等。 当我们在使用...

    达梦和oracle的差异说明

    - **Oracle数据库**:`COUNT(*)`的结果可以存储在`BigDecimal`类型中。这意味着在Oracle中,`COUNT(*)`可以兼容更宽泛的数据类型范围。 - **达梦数据库**:`COUNT(*)`的结果类型为`Long`。因此,在处理`COUNT(*)`...

    将 BigDecimal 类型转换为 Integer 类型.pdf

    此方法会返回 BigDecimal 的整数值,前提是该值在 Integer 的取值范围内,即 `-2^31` 到 `2^31 - 1`。例如: ```java BigDecimal bigDecimalValue = new BigDecimal("123.45"); int intValue = bigDecimalValue....

    BigDecimal类

    BigDecimal 类是 Java 中的一种数值类型,主要用于处理超过 16 位有效数字的数值运算。该类提供了多种构造器和方法,用于创建和操作 BigDecimal 对象。 构造器 BigDecimal 类提供了四种构造器,用于创建不同的 ...

    string转bigdecimal类型.md

    string转bigdecimal类型

    BigDecimal工具类.docx

    第二个方法add(String,String)是将两个字符串类型的数相加,然后返回BigDecimal类型的结果。第三个方法add(String,String,int)是将两个字符串类型的数相加,然后返回字符串类型的结果,并且可以指定保留的小数位数。...

    Hibernate数据类型映射及ID

    7. **BigDecimal**: 映射到`java.math.BigDecimal`,在SQL中对应`NUMERIC`类型,如`NUMERIC(8,2)`表示整数位为6,小数位为2。 #### 字符串和布尔类型映射 1. **Character**: 映射到`java.lang.Character`,在SQL中...

    sqlserver数据库类型对应Java中的数据类型

    SQL Server 数据库类型对应 Java 中的数据类型 SQL Server 是一个关系数据库管理系统,Java 是一个广泛使用的编程语言。在 Java 中,对数据库的操作需要通过 JDBC(Java Database Connectivity)来实现,而在 JDBC ...

    string转bigdecimal类型、一行即可

    string转bigdecimal类型完成了string转bigdecimal类型的操作一行代码搞定

    关于BigDecimal的构造函数与大小比较

    构造函数:解决了上面这个问题好像万事大吉了,结果,我在做测试的时候,又发现了一个莫名其妙的问题,代码如下: BigDecimal bd=supplierRecentProductDao.findHistoryReturnRate("001", "001"); assertEquals(bd....

    hibernate使用中与各种数据库字段类型对应类型训练

    在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者使用面向对象的方式来操作数据库,而无需过多关注SQL语句的编写。本篇将主要围绕Hibernate在与各种数据库字段类型对应的Java类型进行...

    Hibernate中数据类型

    Hibernate 提供了多种数据类型,用于匹配不同数据库系统支持的标准 SQL 数据类型。这些数据类型包括: - **数值类型**:例如,`byte` 和 `java.lang.Byte` 映射到 `TINYINT`,`short` 和 `java.lang.Short` 映射到 ...

    Hibernate和java中的对应数据类型

    下面我们将详细探讨Java、Hibernate以及SQL之间的数据类型对应关系。 1. **基本数值类型**: - `byte` 和 `java.lang.Byte` 对应于 SQL 的 `TINYINT` - `short` 和 `java.lang.Short` 对应于 SQL 的 `SMALLINT` ...

    BigDecimal向Double转换

    在Java编程语言中,BigDecimal是一种用于处理高精度数值的数据类型,尤其适用于金融计算等领域,因为它可以提供不受限的小数位数精度以及精确的数学运算能力。然而,在某些情况下,我们可能需要将BigDecimal类型的值...

    Hibernate 映射类型与Java 类型对照

    对于更精确的数值处理,`big_decimal`映射为`java.math.BigDecimal`,在数据库中通常表现为`NUMERIC`类型。 字符串类型的映射包括`character`和`string`。`character`对应单个字符,映射为`CHAR(1)`,而`string`...

    javascript版BigDecimal类库

    - **类型检查**:由于JavaScript的动态类型特性,确保在进行`BigDecimal`操作前,所有涉及的数值都被转换为`BigDecimal`对象。 - **性能考虑**:虽然`BigDecimal`提供了精确计算,但它的运算速度相比JavaScript原生...

    因BigDecimal类型数据引出的问题详析

    在实际项目中,如使用MyBatis作为持久层框架,可能会在Mapper文件中编写SQL查询条件,涉及到BigDecimal类型的字段。在这种情况下,需要注意避免直接使用等于操作符(=)进行比较,因为数据库可能不会像BigDecimal的...

    bigdecimal

    1. **构造方法**: 在构造 `BigDecimal` 对象时,推荐使用 `Double.toString()` 来转换 `double` 类型的值,因为直接传递 `double` 值可能会导致意外的结果。 2. **舍入模式**: `BigDecimal.ROUND_HALF_UP` 表示四...

    JS的高精度计算(BigDecimal)

    alert(new BigDecimal("10").add(new BigDecimal("3E+10"))); //- alert(new BigDecimal("10").subtract(new BigDecimal("3E+10"))); //* alert(new BigDecimal("10").multiply(new BigDecimal("3E+10"))); // / ...

    BigDecimal的计算

    ### BigDecimal的计算 #### 概述 在Java中,`BigDecimal` 类提供了对超过16位有效数字的十进制数进行精确算术运算的能力。它适用于金融计算、科学计算等场景,在这些场景中,使用浮点数(如 `float` 和 `double`)...

Global site tag (gtag.js) - Google Analytics