我有一个名为expirationDate的MySQL数据库表,它被定义为默认为NULL的时间戳。我有一个方法从表中提取符合各种条件的所有记录,然后打印每个记录的列值作为调试例程的一部分。
当查看返回的记录时,我注意到DB中具有NULL expirationDate的记录被返回到我的程序,expirationDate设置为当前日期/时间。
这是正常行为吗?如果是这样,它是否可配置(我希望值保持为NULL)?
我正在使用Hibernate 3.x库。
答案 0 :(得分:0)
不是Hibernate将null
值转换为当前时间戳,它是MySQL。至少这是最可能的原因。 TIMESTAMP
列的行为取决于多个参数:
TIMESTAMP
列(适用不同的默认值)当然行为是sufficiently defined,也与TIMESTAMP
and NULL
values有关,但仍然令人困惑。我停止使用许多MySQL自动化功能,例如: G。因为以后会有其他人不得不处理代码和表格。
您应该使用MySQL命令行客户端或PMA检查表中的值和CREATE TABLE
的输出。您的表中是否有null
个值?
如果你的表是由Hibernate 3创建的,那么生成的DDL语句也可能是错误的(参见this post)。