首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

hibernate跟oracle中char类型的冲突

2012-10-24 
hibernate和oracle中char类型的冲突测试的时候采用的mysql数据库,没什么问题,但是后来移植到oracle数据库

hibernate和oracle中char类型的冲突
测试的时候采用的mysql数据库,没什么问题,但是后来移植到oracle数据库的时候发现一个问题。

hibernate中如果采用Criteria 和 example查询oracle中对应的char列的时候必须要补全空格才行
比如oracle中char(6),那么对象的属性是“123   ”才会相等,而“123”就不等。但如果oracle中列采用varchar2则不会有这个问题。

单独采用hibernate还好办,我在中间加一层处理字符串即可。

最近学习seam的过程中发现seam中jpa也有这个问题,如果entity中定义为string,则jboss启动肯定会报错,说找不到某列相对应的varchar2(xx),但是我的数据库中列都是char型的。
由于数据库已经固定了,不可能改变数据库,请问谁有成熟的解决方案? 1 楼 tysword 2007-11-05   顶一下。遇到类似问题。 2 楼 thebest 2007-11-07   请问怎么加一层字符串处理?如果对象中的有数据的成员是动态的 3 楼 抛出异常的爱 2007-11-07   从前台传过来的条件为123时
让条件= “123空格空格空格”;
空格的数量是把总char长度减去条件的长度 4 楼 movingboy 2007-11-07   不能改变数据库,但你可以改变列的数据类型啊!把char(x)改成varchar2(x)就可以了 5 楼 may_cauc 2007-11-08   抛出异常的爱 写道从前台传过来的条件为123时
让条件= “123空格空格空格”;
空格的数量是把总char长度减去条件的长度
这种方法可以,就是稍微有点烦。

movingboy 写道不能改变数据库,但你可以改变列的数据类型啊!把char(x)改成varchar2(x)就可以了

这个对遗留数据库肯定不行,并不是我们一个系统在用数据库啊。 6 楼 抛出异常的爱 2007-11-08   放在pojo的get方法中去。。。
不爽的话还可以重构一下pojo的基类,
再不行就拦截form来作。。。

热点排行