拥有Hibernate和MSSQL环境。我遇到过错误: '无法将值NULL插入列'comment_id',表'CHT.dbo.reporter_comments';列不允许空值。 INSERT失败。 Hibernate配置:
<id unsaved-value = "null" type = "int" name="commentId" column="comment_id">
<generator class="identity"/>
</id>
<property name="reporterId" column="REPORTERID" />
<property name="adminComments" column="COMMENT" />
<property name="commentDate" column="COMMENT_DATE"/>
<property name="commentBy" column="COMMENT_BY"/>
'comment_id'列在db中有'identity'属性:如果我使用db client插入:
insert into REPORTER_COMMENTS (REPORTERID, COMMENT, COMMENT_DATE, COMMENT_BY)
values (15119, 'test', '2013-03-04 05:45:25', 'admin');
它对我来说很完美。
Hibernate日志:
DEBUG hibernate.SQL - 插入REPORTER_COMMENTS(REPORTERID,COMMENT,COMMENT_DATE,COMMENT_BY)值(?,?,?,?) DEBUG hibernate.jdbc.AbstractBatcher - 准备语句 DEBUG hibernate.persister.entity.AbstractEntityPersister - 脱水实体:[---。ReporterComments#] DEBUG hibernate.type.LongType - 将'15119'绑定到参数:1 DEBUG hibernate.type.StringType - 将'test'绑定到参数:2 DEBUG hibernate.type.TimestampType - 绑定'2013-03-04 06:13:02'到参数:3 DEBUG hibernate.type.StringType - 将'dw'绑定到参数:4 DEBUG hibernate.jdbc.AbstractBatcher - 即将关闭PreparedStatement(打开PreparedStatements:1,全局:1) DEBUG hibernate.jdbc.AbstractBatcher - 结束语句 DEBUG hibernate.util.JDBCExceptionReporter - 无法插入:[---。ReporterComments] [插入REPORTER_COMMENTS(REPORTERID,COMMENT,COMMENT_DATE,COMMENT_BY)值(?,?,?,?)] java.sql.SQLException:[BEA] [SQLServer JDBC驱动程序] [SQLServer]无法将值NULL插入列'comment_id',表'CHT.dbo.reporter_comments';列不允许空值。 INSERT失败。
谢谢!
答案 0 :(得分:3)
您的comment_id
列实际上是IDENTITY
列吗?如果不是,则那是你的问题,因为Hibernate在使用身份生成器时不会在insert语句中包含comment_id
列,依赖于数据库来生成值。