hibernate跟oracle中char类型的冲突

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来作。。。