- 浏览: 1013012 次
- 性别:
- 来自: 福州
最新评论
-
guanxin2012:
大神,您好。非常感谢您贡献了IKExpression。我们现在 ...
分享开源表达式解析器IK-Expression2.0 -
qqgigas:
LZ,public boolean createUser(LD ...
Sun Directory Server/LDAP学习笔记(二)——API说明及代码样例 -
gao_shengxian:
Hibernate: update T_GX_TEST set ...
优雅Java编程 之 使用Hibernate存储Oracle Spatial对象 -
a78113534:
感谢大神,在安卓里面调用成功了。
发布IK Expression开源表达式解析器 V2.1.0 -
majiedota:
加油
来自开源支持者的第一笔捐赠
背景:
1.数据库使用Oracle,表字段 ColA 被定义为 char(10)(字段类型不能修改,这个是接口方定的)
2.hibernate使用NativeSQL查询(由于项目种种原因,不能使用标准Hibernate的OO方式)。
问题:
从list中返回了List<Object[]>对象,but每行的Object[]中, ColA被Hibernate转成了Character对象,只有一位,后面的char都被截断了.
查了hibernate的文档,知道可以设定每个字段的转化类型,but我们的sql是动态配置的,并不能确定某个字段一定是那种类型,因此此方法不能用了。
暂时的方案:
退回jdbc时代,直接读取DB的META,然后在读数据。
这里的疑问是,为啥Hibernate对Char字段的映射只能是1位嘛,觉得这个转换有问题!!
大家说说,又或者是本人太菜,学艺不精
感谢,需要的就是这样专业的回复。
额~~~你说的也对,不过那样又是一个连接池了。
实际上,我的问题不是用不用hibernate啊,而是有没有在Hibernate nativeSQL 执行中对char(n)的正确读取方法?
你可以采用 Nutz 来做:
木有配置文件,如果有就不是NativeSQL执行方式了,呵呵。
知道这个方法,但问题是SQL是配置的,列名类型不确定,所以。。。无奈!!
谢谢大家了。估计要改Hibernate的源码才能解决了。
你这个是在Bean中实现的方法吧。我这边用不上,nativeSQL执行的时候,没有Bean可言的,否则直接将bean的colA映射成String就OK了
额~~~你说的也对,不过那样又是一个连接池了。
实际上,我的问题不是用不用hibernate啊,而是有没有在Hibernate nativeSQL 执行中对char(n)的正确读取方法?
1.数据库使用Oracle,表字段 ColA 被定义为 char(10)(字段类型不能修改,这个是接口方定的)
2.hibernate使用NativeSQL查询(由于项目种种原因,不能使用标准Hibernate的OO方式)。
问题:
从list中返回了List<Object[]>对象,but每行的Object[]中, ColA被Hibernate转成了Character对象,只有一位,后面的char都被截断了.
查了hibernate的文档,知道可以设定每个字段的转化类型,but我们的sql是动态配置的,并不能确定某个字段一定是那种类型,因此此方法不能用了。
暂时的方案:
退回jdbc时代,直接读取DB的META,然后在读数据。
这里的疑问是,为啥Hibernate对Char字段的映射只能是1位嘛,觉得这个转换有问题!!
大家说说,又或者是本人太菜,学艺不精
评论
23 楼
zwq4166506
2009-09-21
不是hibernate的问题,而是Java的char只能是一位。。
应该在hql中cast(ColA as varcher2(10)).
请问LZ,hibernate如何做到动态配置映射?
应该在hql中cast(ColA as varcher2(10)).
请问LZ,hibernate如何做到动态配置映射?
22 楼
guazi
2009-09-21
呵呵,我也遇到过,可以在查询的时候给这个字段加一个trim来解决一下,得到的就是string的类型了,而且是完整的,据说是oraclejdbc的一个bug。
原:select char(10) from table ...
改:select trim(char(10)) from table....
你试试。。。。
原:select char(10) from table ...
改:select trim(char(10)) from table....
你试试。。。。
21 楼
linliangyi2007
2009-09-20
lgdlgd 写道
这个问题我遇到过,确实都是CharacterType这个类惹的祸,初步看到,HIBERNATE从JDBC取得数据库字段类型,判断如果是CHAR(具体代码好像是12,记不得了),就使用以上的那个类CharacterType来处理,然后这个类直接取第一位,也不管数据库是CHAR(1) 还是CHAR(n),我觉得这是明显有问题的,不知道是不是有什么特殊的原因,不过我使用处理String类型的那个类替换了这个类,到现在快一年了,没发现有什么不妥。
感谢,需要的就是这样专业的回复。
20 楼
zuiyanwangyue
2009-09-20
lgdlgd 写道
这个问题我遇到过,确实都是CharacterType这个类惹的祸,初步看到,HIBERNATE从JDBC取得数据库字段类型,判断如果是CHAR(具体代码好像是12,记不得了),就使用以上的那个类CharacterType来处理,然后这个类直接取第一位,也不管数据库是CHAR(1) 还是CHAR(n),我觉得这是明显有问题的,不知道是不是有什么特殊的原因,不过我使用处理String类型的那个类替换了这个类,到现在快一年了,没发现有什么不妥。
支持lgdlgd的观点
19 楼
zuiyanwangyue
2009-09-20
支持lgdlgd的观点
18 楼
lgdlgd
2009-09-20
这个问题我遇到过,确实都是CharacterType这个类惹的祸,初步看到,HIBERNATE从JDBC取得数据库字段类型,判断如果是CHAR(具体代码好像是12,记不得了),就使用以上的那个类CharacterType来处理,然后这个类直接取第一位,也不管数据库是CHAR(1) 还是CHAR(n),我觉得这是明显有问题的,不知道是不是有什么特殊的原因,不过我使用处理String类型的那个类替换了这个类,到现在快一年了,没发现有什么不妥。
17 楼
zozoh
2009-09-19
linliangyi2007 写道
魔力猫咪 写道
为什么呢?大不了新建一个专门的纯JDBC数据库连接就是了。你们使用了SQL,而且从这种使用上来看,也没什么缓存的问题。那么干脆就直接另建一个数据库连接好了。最多对这个连接进行限制,让其只能查询。
要不把其他持久化框架引进来。除非Hibernate使用了2级缓存,而你们的处理又会造成数据库数据变动。才不能不必须走Hibernate这条路。
要不把其他持久化框架引进来。除非Hibernate使用了2级缓存,而你们的处理又会造成数据库数据变动。才不能不必须走Hibernate这条路。
额~~~你说的也对,不过那样又是一个连接池了。
实际上,我的问题不是用不用hibernate啊,而是有没有在Hibernate nativeSQL 执行中对char(n)的正确读取方法?
你可以采用 Nutz 来做:
DataSource ds = null; // get your datasource here. Dao dao = new NutDao(ds); Sql sql = Sqls.create("YOUR SQL HERE").setCallback(new SqlCallback() { public Object invoke(Connection conn, ResultSet rs, Sql sql) throws SQLException { List<Object[]> re = new LinkedList<Object[]>(); while (rs.next()) { // Write you code here } return re; } }); dao.execute(sql); // Get the query result List<Object[]> list = sql.getList(Object[].class); // ... for (Object[] objs : list) { // write anything as you want }
16 楼
seele
2009-09-19
java 中的 char 本来就是一位的....
Oracle 中的char() 可以用来存数组形式的string ...
映射过来应该是string 才是啊...
Oracle 中的char() 可以用来存数组形式的string ...
映射过来应该是string 才是啊...
15 楼
digyso
2009-09-19
好像碰到过 用cast 不确定是不是一个问题
14 楼
蔡华江
2009-09-19
使用Transformers将结果直接转化为Map
13 楼
daniel.ho
2009-09-19
貌似碰到过,一个方法是你在sql里面cast(ColA as char(n));第二个方法,要是多次用到的话,看看直接修改Hibernate的类了,反正也提供了源代码
12 楼
Terence.Gao
2009-09-19
非常讨厌你这种表达方式,除非关键术语如hibernate直接用英文,个人观点。
别说这么多年就学到了一个but...
badqiu的方法确实经常用到。
别说这么多年就学到了一个but...
badqiu的方法确实经常用到。
11 楼
linliangyi2007
2009-09-18
whaosoft 写道
你在配置文件里配置成string的试试
木有配置文件,如果有就不是NativeSQL执行方式了,呵呵。
10 楼
whaosoft
2009-09-18
你在配置文件里配置成string的试试
9 楼
linliangyi2007
2009-09-18
erotica 写道
SQLQuery query = session.createSQLQuery(); query.addScalar("列名", Hibernate.String)
知道这个方法,但问题是SQL是配置的,列名类型不确定,所以。。。无奈!!
谢谢大家了。估计要改Hibernate的源码才能解决了。
8 楼
erotica
2009-09-18
SQLQuery query = session.createSQLQuery(); query.addScalar("列名", Hibernate.String)
7 楼
linliangyi2007
2009-09-18
badqiu 写道
变通的解决办法,使用一个代理方法不就行了.hibernate不直接操作ColA名称,而操作ColaString.而getColA()则适应你的接口
个人在hibernate很少用到char,所以不清楚.
private String colAString; char[] getColA() { return str.toCharArray(); } public getColAString() { return colAString; } public setColAString(String v) { colAString = v; }
个人在hibernate很少用到char,所以不清楚.
你这个是在Bean中实现的方法吧。我这边用不上,nativeSQL执行的时候,没有Bean可言的,否则直接将bean的colA映射成String就OK了
6 楼
badqiu
2009-09-18
变通的解决办法,使用一个代理方法不就行了.hibernate不直接操作ColA名称,而操作ColaString.而getColA()则适应你的接口
个人在hibernate很少用到char,所以不清楚.
private String colAString; char[] getColA() { return str.toCharArray(); } public getColAString() { return colAString; } public setColAString(String v) { colAString = v; }
个人在hibernate很少用到char,所以不清楚.
5 楼
linliangyi2007
2009-09-18
魔力猫咪 写道
为什么呢?大不了新建一个专门的纯JDBC数据库连接就是了。你们使用了SQL,而且从这种使用上来看,也没什么缓存的问题。那么干脆就直接另建一个数据库连接好了。最多对这个连接进行限制,让其只能查询。
要不把其他持久化框架引进来。除非Hibernate使用了2级缓存,而你们的处理又会造成数据库数据变动。才不能不必须走Hibernate这条路。
要不把其他持久化框架引进来。除非Hibernate使用了2级缓存,而你们的处理又会造成数据库数据变动。才不能不必须走Hibernate这条路。
额~~~你说的也对,不过那样又是一个连接池了。
实际上,我的问题不是用不用hibernate啊,而是有没有在Hibernate nativeSQL 执行中对char(n)的正确读取方法?
4 楼
魔力猫咪
2009-09-18
为什么呢?大不了新建一个专门的纯JDBC数据库连接就是了。你们使用了SQL,而且从这种使用上来看,也没什么缓存的问题。那么干脆就直接另建一个数据库连接好了。最多对这个连接进行限制,让其只能查询。
要不把其他持久化框架引进来。除非Hibernate使用了2级缓存,而你们的处理又会造成数据库数据变动。才不能不必须走Hibernate这条路。
要不把其他持久化框架引进来。除非Hibernate使用了2级缓存,而你们的处理又会造成数据库数据变动。才不能不必须走Hibernate这条路。
发表评论
-
来自开源支持者的第一笔捐赠
2013-01-09 21:15 57812013年1月9号,一个平凡而又不平常的日子! IK中文分词 ... -
发布 IK Analyzer 2012 FF 版本
2012-10-23 17:50 25081首先感谢大家对IK分词器的关注。 最近一段时间正式公司事务最 ... -
发布 IK Analyzer 2012 版本
2012-03-08 11:23 36179新版本改进: 支持分词歧义处理 支持数量词合并 词典支持中英 ... -
CSDN发生严重用户账号泄密事件
2011-12-21 19:21 2566之前有在CSDN注册过的兄弟们,注意了。。。 如果你的邮箱, ... -
一个隐形的java int溢出
2011-08-30 09:44 7560故事的背景: 笔者最近在做一个类SNS的项目,其中 ... -
雷军 :互联网创业的葵花宝典
2011-05-04 10:35 3596博主评: 这片博客很短 ... -
Luci-mint站内搜索实测
2011-04-02 16:18 4141关于Luci-mint 服务器硬 ... -
发布 IK Analyzer 3.2.8 for Lucene3.X
2011-03-04 17:49 14256IK Analyzer 3.2.8版本修订 ... -
TIPS - XML CDATA中的非法字符处理
2011-02-17 15:03 3305XML解析过程中,常遇见CDATA中存在非法字符,尤其在火星文 ... -
对Cassandra的初体验
2010-10-13 17:58 9137作为“云计算”时代的架构设计人员而言,不懂K-V库会被 ... -
Spring + iBatis 的多库横向切分简易解决思路
2010-10-11 13:43 93561.引言 笔者最近在做一个互联网的“类SNS”应用,应用 ... -
发布 IK Analyzer 3.2.5 稳定版 for Lucene3.0
2010-09-08 14:43 5823新版本IKAnnlyzer3.2.8已发布! 地址: http ... -
关于Lucene3.0.1 QueryParser的一个错误
2010-05-21 21:33 2129表达式1: 引用 id:"1231231" ... -
发布 IK Analyzer 3.2.3 稳定版 for Lucene3.0
2010-05-15 14:13 6719IK Analyzer 3.2.3版本修订 在3.2.0版 ... -
windows平台上的nginx使用
2010-01-28 17:13 3407转载自:http://nginx.org/en/docs/wi ... -
发布IKAnnlyzer3.2.0稳定版 for Lucene3.0
2009-12-07 09:27 9580最新3.2.5版本已经推出,http://linliangyi ... -
在Tomcat下以JNDI方式发布JbossCache
2009-12-04 10:57 3831前言: 看过JbossCache的开发手册,发现在Jb ... -
Spring AOP小例子
2009-11-16 10:35 3405PS: 要注明一下,这个是转载滴,之前漏了说鸟,汗死 这里给 ... -
ActiveMQ 5.X 与 Tomcat 集成一(JNDI部署)
2009-11-10 15:15 5650原文地址:http://activemq.apache.org ... -
发布IKAnalyzer中文分词器V3.1.6GA
2009-11-08 23:10 11858IKAnalyzer3.2.0稳定版已经发布,支持Lucene ...
相关推荐
**标题解析:**“hibernate的第一个例子”表明这是一个关于Hibernate框架的基础教程,主要目标是展示如何使用Hibernate进行数据持久化操作。 **描述分析:**描述提到这是一个超级简单的例子,包含一个持久化对象...
《Hibernate入门:初识与实践》 ...总之,"hibernate第一个hibernate"项目是一个绝佳的起点,它将引导你了解并掌握Hibernate的基本概念和操作。通过实践,你可以逐步熟悉ORM思想,为后续的Java开发奠定坚实的基础。
"第一个手写Hibernate"项目旨在帮助开发者深入理解Hibernate的工作原理,通过手动编写相关代码,以实践的方式来学习和掌握Hibernate的核心概念。 **一、Hibernate简介** Hibernate是一个开源的ORM框架,它允许...
”表达了这个教程的目标是避免新手在学习过程中遇到常见问题,确保他们能够顺利地完成第一个Hibernate应用的搭建和运行。 **知识点详解** 1. **Hibernate简介**:Hibernate是一个开源的ORM框架,它将Java对象与...
本文将深入探讨如何使用SpringMvc和Hibernate这两个强大的框架,构建一个功能完善的问题管理系统。首先,我们来看看SpringMvc和Hibernate的核心概念及其在项目中的作用。 SpringMvc是Spring框架的一个模块,专门...
【hibernate第一个例子】 在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本示例将引导初学者了解如何使用Hibernate进行简单的数据库连接和操作。 首先,我们需要...
Hibernate是一个用于简化Java数据库编程的开源框架,它提供了一种在Java应用程序中持久化对象的方式,避免了直接编写SQL语句,提高了开发效率。 **1. Hibernate基本概念** - **对象关系映射(ORM)**: ORM是将...
**hibernate完整的一个项目** 本项目旨在提供一个完整的Hibernate框架的实现,涵盖了从环境搭建到实际应用的全过程。Hibernate是Java开发中的一个强大的对象关系映射(ORM)框架,它简化了数据库与Java对象之间的...
Hibernate 是一个基于 Java 的持久层框架,提供了一个抽象的数据访问层,能够与多种数据库进行集成。在 Hibernate 的配置文件中,我们可以配置不同的数据库连接,包括驱动程序、URL 等信息。 配置 Hibernate 连接...
在Java开发领域,Hibernate是一个非常重要的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。当涉及到Hibernate项目时,为了使其正常运行,通常需要一系列的JAR(Java ...
Hibernate是一个开源的对象关系映射(ORM)框架,它封装了JDBC(Java Database Connectivity)的复杂性,并允许Java开发者以面向对象的方式操作数据库。Hibernate框架被广泛应用于企业级Java应用程序中,可以与...
Hibernate 是一个开源的O/R mappimg的框架,基于JDBC提供了一种持久性数据管理的方案,相对于EntityBean来说是相当轻量级的。由于Hibernate是基于 JDBC的,所以它的数据库查寻的能力相对于CMP来说也是异常强大的,...
# Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的...
Hibernate 是一个基于Java的ORM(Object-Relational Mapping,对象关系映射)框架,它提供了一种简洁高效的方式来访问和操作关系数据库。下面是 Hibernate 的主要知识点: Hibernate 简介 Hibernate 是一个开源的...
因此,"解决Hibernate与jdk新版本不兼容的jar问题"可能是提供了一个升级后的Hibernate库,或者是包含了特定的补丁或者配置,使得Hibernate能够在新JDK环境下正常工作。 在"lib"目录下,可能包含了所有必要的...
Hibernate,一个强大的Java对象关系映射(ORM)框架,极大地简化了数据库操作。在处理数据更新时,Hibernate提供了多种方法,但同时也可能会遇到一些常见问题。本篇文章将深入探讨Hibernate更新机制及其可能遇到的...
"第一个Hibernate代码, Hello Hibernate" 这个标题表明我们将要探讨的是一个初学者级别的Hibernate教程,可能是通过一个简单的项目或示例来介绍如何使用Hibernate框架。Hibernate是一个开源的对象关系映射(ORM)...
标题提到的是“一个好的hibernate源代码有server2008数据库”。这里我们可以理解为,这是一个关于Hibernate框架的示例项目,它使用了Microsoft SQL Server 2008作为后端数据库。Hibernate是Java开发中常用的一个对象...
Hibernate是一个流行的开源对象关系映射(ORM)框架,它简化了Java应用与关系型数据库之间的交互。通过Hibernate,开发者可以使用面向对象的方式处理数据库操作,而无需关心底层SQL语句的编写。 在留言板系统中,...
Hibernate 是一个开源的对象关系映射(ORM)框架,它允许Java开发者使用面向对象的方式来操作数据库。这个框架将数据库操作转化为对Java对象的操作,简化了数据持久化的复杂度。以下是对Hibernate的一些关键知识点的...