Hibernate + MSSQL,无法将值NULL插入列中

时间:2013-03-04 11:32:10

标签: java sql-server hibernate

拥有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,COM​​MENT,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,COM​​MENT,COMMENT_DATE,COMMENT_BY)值(?,?,?,?)]   java.sql.SQLException:[BEA] [SQLServer JDBC驱动程序] [SQLServer]无法将值NULL插入列'comment_id',表'CHT.dbo.reporter_comments';列不允许空值。 INSERT失败。

谢谢!

1 个答案:

答案 0 :(得分:3)

您的comment_id列实际上是IDENTITY列吗?如果不是,则那是你的问题,因为Hibernate在使用身份生成器时不会在insert语句中包含comment_id列,依赖于数据库来生成值。