此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主截止到2008-06-17 19:43:32的汇总数据:
发帖数:2
结贴数:0
结贴率: 0.00%
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
楼主截止到2008-06-17 19:43:32的汇总数据:
发帖数:2
结贴数:0
结贴率: 0.00%
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
换成。size()看看是多少?
System.out.println(Fizdenhed.getLnnm().length虽然是24
但BYTE数的话就是28,因为里面有4个中文~
结果如下:
'012345678901234567890123'---参照
'哈哈哈哈 '--System.out
LNNM在ORACLE里定义的是CHAR型,所以长度不足24时,会补空SPACE
我试过其他字段,也是如此,比如CHAR(2)的字段,值为'美'
HIBERNATE里取到的就是'美 '
用show_sql为true..用显示的SELECT语句在SI OBJECT BROWSER执行,
结果是正确的'哈哈哈哈 '和'美',并没有多加SPACE是不是HIBERNATE哪里设置有问题?
是比'012345678901234567890123'多四个空SPACE,
虽然你的字符串长度是24,可以一个汉字是2个字节(你目前的编码下),如果你这28byte能成功存进最大为24byte的字段,Hibernate才是出鬼了。建议你在页面(不知道你是不是Web开发)限制输入的最大字节数,不能超过24byte。还有,你的长度不足24补空格我想是因为你数据库的该字段用的是char(24),如果用varchar2(24)不会有这个情况。
不过,我知道原因是出在这值是从另一张表里取到后,后加空格后才出现的问题。
现在的问题是为什么取数值的时候会在取到空格会多~(数据库里该表也是CHAR(24))
用show_sql为true打出的SELECT在SI OBJECT BROWSER运行时,这字符串是4个中文+16个空格,(此应该为正解)
但在程序里实际取到的却是4个中文+20个空格。(多了4个空格)感觉现在HIBERNATE一直在以字符数计算汉字?算的是LENGTH的长度
取的时候,它一定把4个中文的单个长度看成1,才会在后面+20个空格的吧。。好奇怪啊~~我不希望改动数据类型~