【发布时间】:2014-09-09 09:45:01
【问题描述】:
我已经启动了一个 Struts 和 Hibernate 集成项目。
我有一个专栏firstname as
@Column(name="FirstName", length=15, nullable=false)
public String getFirstName() {
return firstname;
}
firstname 是 POJO 中的参数,其值来自 Struts 表单。
问题是在提交表单时,firstname的空值存储在db中。
【问题讨论】:
-
你知道null和空字符串不是一回事吧?
-
Null 和“空值”在许多数据库中不是一回事。例如,Oracle 数据库将 NULL 和 '' 视为相同,而 MS SQL 将 NULL 和 "" 视为不同。检查您使用的数据库的概念。
-
表单中的空值意味着 FIRSTNAME 不是 null ,它是一个空白字符串。所以DB不给任何例外。
-
覆盖
validate方法并使用 commons-validator 或其他类似 JSR-303 来防止输入空字符串。之后,您可以阻止它们存储在数据库中。 -
是的,Oracle 违反了 ANSI 标准,将 null 和空字符串视为同一事物。我不知道有任何其他数据库有相同的错误。
标签: java hibernate struts2 jpa-2.0 pojo