java - Hibernate 存储空字符串会在数据库中创建空白。

标签 java hibernate sybase

我使用 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 无关。

引用

Manual link ,

“除非您将 string_rtruncation 设置为 on,否则 Adaptive Server 会将条目截断为指定的列长度,而不会发出警告或错误。有关详细信息,请参阅《引用手册》中的 set 命令。空字符串“”或 '' 存储为单个空格而不是 NULL。因此,“abc” + “” + “def” 相当于“abc def”,而不是“abcdef”。”

您可以做两件事:

  • 让您的应用程序显式插入 NULL(这类似于 它应该这样做,因为空字符串不等于 NULL)
  • 在该表(或多个表)上放置一个插入/更新触发器 截取空字符串并将其转换为NULL

关于java - Hibernate 存储空字符串会在数据库中创建空白。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11193550/

相关文章:

java - 当我在 jscrollpane 上添加 jtable 时,水平滚动条不起作用

java - 如何防止使用hibernate连接mysql时出现mysql wait_timeout?

java - JDBC同时连接MySQL和Sybase数据库

java - hibernate 设置

SQL父/子递归调用还是联合?

stored-procedures - 在 Sybase ASE 15.0 中处理从一个存储过程到另一个存储过程的错误

java - 使用 google api java 登录

java - 过滤掉 Log4j2 文件中的 Hibernate 日志

java - 我的测量执行时间的代码存在问题

java - 如何正确保存ManyToOne实体?