项目运用到hibernate,有时候不可避免的使用原生SQL进行某些查询。用hql查询的话,因为实体配置文件的映射,数据库的字段被映射的不同java数据类型上,原生sql查询返回的结果集中一旦存在hibernate无法映射的数据类型的话,就会报 no dialect mapping for jdbc type 的异常,type后面的数字是每个类型的代码,例如3代表的是Decimal类型的转化。遇到这样的问题Google一把结果解决方案如出一撤的要增加一个自己写的词典,进行类型的注册,这样固然是可以解决问题的,但是假如只有几个原生sql查询就这样“大动干戈”了。突然想到以前用.addScalar("${返回列名}", Hibernate.${type})来指定结果集的返回类型,try it !
示例代码
//billNumber,sum为返回结果集的列名
Query query=getSession().createSQLQuery(sqlStr).addScalar("billNumber", Hibernate.STRING).addScalar("sum", Hibernate.BIG_DECIMAL)
试下是不是刚才返回列中包含Decimal类型的字段原生SQL查询不在报异常了?问题解决,杀鸡还是不要用牛刀了
PS:如果加.addScalar的话,有几列就需要加几列,负责hibernate会把没有加.addScalar的列给忽略。
分享到:
相关推荐
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect <prop key="hibernate.show_sql">false <!-- 其他配置 --> <prop key="hibernate.jdbc.fetch_size">50 ``` 这里的关键是`hibernate....
在这个主题中,我们主要关注的是Hibernate的配置文件`hibernate.properties`以及它的DTD(Document Type Definition)文件,包括`hibernate-configuration-3.0.dtd`和`hibernate-mapping-3.0.dtd`。 首先,`...
- `dom4j.jar`:用于XML处理,Hibernate使用它来解析和生成HBM(Hibernate Mapping)文件。 - `slf4j-api.jar` 和 `slf4j-log4j12.jar`:提供日志服务,通过SLF4J API,你可以选择不同的日志实现,如Log4j。 6. ...
在使用ORM(Object-Relational Mapping)框架如Hibernate时,方言的作用尤为重要。Hibernate方言是Hibernate框架内一个关键的抽象概念,它定义了如何将Hibernate的通用SQL语句转换为特定数据库的SQL语法。例如,...
1. **hibernate**:代表Hibernate ORM框架,它的核心概念包括实体(Entity)、标识符(Identifier)、属性(Attributes)、映射文件(Mapping Files)、会话(Session)、事务(Transactions)等。 2. **java**:...
jdbc for scdd <property name="connection.password">scdd oracle.jdbc.driver.OracleDriver <mapping resource="com/hope/scdd/dao/Binoutputreport.hbm.xml" /> </hibernate-configuration>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect <!-- 可选配置 --> <property name="hibernate.show_sql">true <property name="hibernate.format_sql">true ...
Hibernate 是一个流行的 ORM(Object-Relational Mapping)框架,用于简化 Java 应用程序中的数据库交互。 Hibernate 的配置文件是其核心组件之一,用于定义 Hibernate 的运行期参数。下面我们将详细介绍 Hibernate ...
在Hibernate中,DTD(Document Type Definition)文件是XML文档的规范定义,用于验证XML配置文件的结构是否合法。我们来深入探讨一下`hibernate.properties`、`hibernate-configuration-3.0.dtd`以及`hibernate-...
- `hibernate.dialect`:指定使用的数据库方言,例如`org.hibernate.dialect.OracleDialect`用于Oracle数据库。 - `hibernate.connection.driver_class`:指定JDBC驱动类,对于Oracle数据库,应为`oracle.jdbc....
Hibernate 是一个流行的 ORM(Object-Relational Mapping)框架,广泛应用于 Java 企业应用开发中。为了提高 Hibernate 框架下的对象效率和开发效率,需要对其进行合理的配置。下面将详细介绍 Hibernate 配置参数的...
Hibernate通过自动化的对象关系映射机制,实现了Java对象与数据库表之间的无缝衔接,不仅能够管理对象到数据库表的映射,还提供了强大的数据查询和获取功能,大大减少了开发人员手动编写SQL和处理JDBC的工作量,从而...
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property> <!--数据库方言(数据库类型)--> <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <!--...
- 将JDBC驱动`sqljdbc4.jar`复制到`db`文件夹下,其余的Hibernate相关库复制到`hibernate`文件夹下。 **步骤3:** 添加库引用。 - 右击项目,选择“Build Path”>“Configure Build Path”。 - 在“Libraries”选项...
- **Dialect**: `<property name="hibernate.dialect">`设置数据库方言,如`org.hibernate.dialect.MySQL5Dialect`,确保Hibernate能正确处理特定数据库的SQL语法。 - **Show SQL**: `<property name="hibernate....
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect <!-- 自动创建表 --> <property name="hibernate.hbm2ddl.auto">update <!-- 添加映射文献 --> <mapping resource=...
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect <prop key="hibernate.show_sql">true <!-- 添加Hibernate映射文件 --> <value>Book.hbm.xml ``` 接下来,我们需要创建...
3. **方言设置**:方言(Dialect)是Hibernate与特定数据库通信的语言,比如对于MySQL,我们可以设置`<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>`。 4. **实体映射**:...
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect ``` 4. **缓存设置**:可以选择性地配置第二级缓存和查询缓存,提高性能。例如: ```xml <property name="hibernate.cache.use_...