我使用 sybase db 和 hibernate 作为 ORM 工具, 我正在处理 Person 对象,其中包含名称作为字符串变量, 我在数据库端使用了 varchar 数据类型 当我创建 Person 对象时
Person p=new Person();
p.setName(null);
session.saveOrUpdate(p);
这很好用
但是当我在名称中放入空字符串时,它会在数据库中创建空格。
Person p=new Person();
p.setName("");
session.saveOrUpdate(p);
为什么会发生这种情况?
任何建议将不胜感激..
最佳答案
它是数据库填充添加了空白,与 hibernate 无关。
引用
“除非您将 string_rtruncation 设置为 on,否则 Adaptive Server 会将条目截断为指定的列长度,而不会发出警告或错误。有关详细信息,请参阅《引用手册》中的 set 命令。空字符串“”或 '' 存储为单个空格而不是 NULL。因此,“abc” + “” + “def” 相当于“abc def”,而不是“abcdef”。”
您可以做两件事:
- 让您的应用程序显式插入 NULL(这类似于 它应该这样做,因为空字符串不等于 NULL)
- 在该表(或多个表)上放置一个插入/更新触发器 截取空字符串并将其转换为NULL
关于java - Hibernate 存储空字符串会在数据库中创建空白。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11193550/