论坛首页 Java企业应用论坛

hibernate和oracle中char类型的冲突

浏览 5220 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-10-20  
测试的时候采用的mysql数据库,没什么问题,但是后来移植到oracle数据库的时候发现一个问题。

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

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

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

这种方法可以,就是稍微有点烦。

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


这个对遗留数据库肯定不行,并不是我们一个系统在用数据库啊。
0 请登录后投票
   发表时间:2007-11-08  
放在pojo的get方法中去。。。
不爽的话还可以重构一下pojo的基类,
再不行就拦截form来作。。。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics