我使用sybase db和hibernate作为ORM工具, 我正在处理Person对象,其中包含名称为String变量, 我在db端使用了varchar数据类型 当我创建人物的对象
时Person p=new Person();
p.setName(null);
session.saveOrUpdate(p);
这很好用
但是当我在名称中放入空字符串时,它会在db中创建空格。
Person p=new Person();
p.setName("");
session.saveOrUpdate(p);
为什么会这样?
非常感谢任何建议。
答案 0 :(得分:4)
它的数据库填充增加了空格,与hibernate无关。
参考
“Adaptive Server将条目截断为指定的列长度而不发出警告或错误,除非您将string_rtruncation设置为on。有关详细信息,请参阅”参考手册“中的set命令。空字符串”“或”“存储为因此,“abc”+“”+“def”等同于“abc def”,而不是“abcdef”。“
你可以做的两件事:
答案 1 :(得分:1)
Empty是一个字符串值,而hibernate认为它是一个值为空的字符串所以它会创建它。你可以检查“”.equals(..),这意味着java将“”视为一个值。