问题描述:
hibernate 技术中对应数据库中每一个表,都会有一个映射文件与之对应,此文件描述数据库表中每一个字段的类型、长度、是否可空等属性。在进行表中 记录的插入(更新)操作时, hibernate 会根据映射文件中的描述自动生成一个包含所有字段的插入(更新) sql 语句,此时如果映射文件中某字段的值 为空 (NULL) 而其在数据库表中定义的默认值不为空, hibernate 会将空值插入到表中,而不会使用此字段的默认值。
解决方法:
在 hibernate 映射文件对数据库表的描述中,加入 dynamic-insert="true" 和 dynamic-update="true" 语句,这时 hibernate 在进行插入(更新)操作时,只会为那些值不为空的字段赋值,而值为空的字段就会使用数据库表中定义的默认值了。