一、问题描述
1.1、
使用hibernate的findBySQLQuery查询“select role_id,chg_id from tbl_tra_role_info”。
在List<Object[]>对象中,每一个单元的数据都是java的character类型,数据长度=1,而字段(role_id)与字段(chg_id )都是char(10)类型。
1.2、
将sql改为“select role_id+'',chg_id+'' from tbl_tra_role_info”后,每一个单元的数据不在是character类型,数据的长度也不再是1了,但是 每一个Object[]中的两个数据都是一致的,且都是第一列“role_id”的值。
二、问题处理
2.1、
sql不变,还是“select role_id,chg_id from tbl_tra_role_info”,将表字段的类型,由原来的char(10),改为varchar(50),问题解决。
2.2、
sql改变,"select role_id+'' a,chg_id+'' b from tbl_tra_role_info",表结构不变,问题解决。
三、问题分析
3.1、
在hibernate代码中,或sqljdbc.jar包代码中,存在处理数据库char类型的的缺陷。hibernate嫌疑较大,将数据库中char类型的数据,直接转换为java的char类型数据,导致数据长度丢失。
3.2、用“select role_id+'',chg_id+'' from tbl_tra_role_info”这句sql去查询,发现问题:
由于两列都没有列名,导致hibernate在整理结果集的过程中,将第一列数据赋值给第二列,出现新问题。
-------------
3.3、还有可能hibernate配置出了问题,数据库方言配置似乎没啥问题,
写道
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.query.factory_class">
<!--org.hibernate.hql.classic.ClassicQueryTranslatorFactory -->
org.hibernate.hql.ast.ASTQueryTranslatorFactory
</prop>
<prop key="hibernate.jdbc.fetch_size">50</prop>
<prop key="hibernate.jdbc.batch_size">50</prop>
</props>
</property>
- 大小: 18.8 KB
分享到:
相关推荐
### Hibernate SQLQuery 查询Oracle char类型结果为一个字符的解决方法 在使用Hibernate框架结合Oracle数据库进行数据查询时,经常会遇到一个问题:当查询的结果集中包含char类型的字段时,Hibernate可能会将其映射...
在Java的持久化框架Hibernate中,SQLQuery是用于执行自定义SQL语句的重要工具,它允许开发者绕过ORM(对象关系映射)的抽象层,直接与数据库进行交互。这篇博客"Hibernate SQLQuery 本地查询"可能详细讲解了如何利用...
在Java的Hibernate框架中,有时候我们需要执行自定义的SQL查询以获取特定的数据,这时就可以使用SQLQuery接口。本文将深入探讨Hibernate如何通过SQLQuery接口执行原生SQL查询,并展示如何处理查询结果。 一、创建...
标题 "Hibernate 连接 SQLServer2000" 暗示了我们将探讨如何使用流行的Java ORM框架Hibernate与较老版本的SQL Server数据库——SQL Server 2000进行交互。在Java应用程序开发中,Hibernate提供了对象关系映射功能,...
hibernate sql hqlsql
本篇文章将深入探讨使用Hibernate ORM框架与SQL Server 2000数据库进行分页查询的方法。 首先,Hibernate是Java领域中最流行的ORM(对象关系映射)框架之一,它允许开发者使用面向对象的方式操作数据库,减少了直接...
**使用Hibernate访问SQL Server数据库** Hibernate是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库和...通过分析和运行这些代码,你可以更深入地了解和实践Hibernate与SQL Server的整合。
在这个场景中,我们将探讨如何使用Hibernate与SQL Server 2005数据库进行基本的CRUD(Create、Read、Update、Delete)操作。 首先,我们需要确保引入了Hibernate的依赖库。从描述中的“Hibernate 所需要的 jar 包”...
**SQLServer与Hibernate的整合应用** 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是底层的SQL语句。本教程将介绍如何使用Hibernate操作...
SQLServer2008Dialect 优化了原来的分页查询数据方法以及在生成SQL时表后增加了with(nolock)
这里,我们提到了一个名为“Hibernate的映射类型_hibernate_mysql映射类型.doc”的文档,这很可能是一个详细的对照表,列出了Hibernate如何将Java数据类型映射到MySQL数据库的SQL数据类型。MySQL是世界上最流行的...
Struts 1.1、Hibernate 3.0 和 SQL Server 2005 数据库驱动包是构建基于Java的企业级Web应用程序的关键组件。这些技术在2000年代中期广泛应用于开发面向服务架构(SOA)和模型视图控制器(MVC)模式的系统。 Struts...
本文将深入探讨如何将Spring与Hibernate整合,以便在SQL Server数据库上执行SQL操作。 首先,Spring框架是一个全面的Java企业级应用开发框架,它提供了依赖注入(DI)和面向切面编程(AOP)等核心特性,使得应用...
**hibernate3连接sql server的例子** 在Java开发中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它简化...通过这个例子,开发者可以深入理解Hibernate 3如何与SQL Server配合工作,并将其应用到实际项目中。
这里的`{cat.*}`是Hibernate的别名语法,用于指定SQL查询中的表别名,并将其与Java实体类关联。 如果查询涉及到关联加载,比如加载子实体或集合,可以使用`addJoin()`方法: ```java List<Cat> cats = sess....
1. **msbase.jar**:这是Microsoft JDBC Driver的基础库,包含了与SQL Server交互所需的基本类和接口。它提供了对SQL Server的JDBC支持,使Java应用程序能够通过JDBC API连接到SQL Server数据库,执行SQL查询,以及...
本项目"SpringBoot+Hibernate+MySQL+SQLServer双数据源"正为此目的设计,它利用SpringBoot的灵活性和便利性,结合Hibernate的ORM能力,实现了对MySQL和SQLServer两种主流数据库的支持,为数据迁移、读写分离、高可用...
一个基于Hibernate 和 SQLServer 数据库的分页示例,所有文件和数据库备份都在,只是速度不怎么快,如果加上自动生成下拉框,速度就更慢了,单表、10008条测试数据,如果哪位大侠改进了查询速度望告之:vni2007@163....
Struts、Hibernate、Spring 和 SQL Server 2005 是Java Web开发中四个非常关键的组件,它们在构建企业级应用程序时发挥着重要作用。 Struts 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,主要...