2013-03-04 122 views
0

有Hibernate和MSSQL env。我遇到了錯誤: '無法將值NULL插入列'comment_id',表'CHT.dbo.reporter_comments';列不允許有空值。 INSERT失敗。' Hibernate配置:Hibernate + MSSQL,無法將值NULL插入列

<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 '身份' 屬性:如果我做的使用數據庫客戶端插入:

insert into REPORTER_COMMENTS (REPORTERID, COMMENT, COMMENT_DATE, COMMENT_BY) 
values (15119, 'test', '2013-03-04 05:45:25', 'admin'); 

它的工作非常適合我。

Hibernate的日誌:

DEBUG hibernate.SQL - insert into REPORTER_COMMENTS (REPORTERID, COMMENT, COMMENT_DATE, COMMENT_BY) values (?, ?, ?, ?) DEBUG hibernate.jdbc.AbstractBatcher - preparing statement DEBUG hibernate.persister.entity.AbstractEntityPersister - Dehydrating entity: [---.ReporterComments#] DEBUG hibernate.type.LongType - binding '15119' to parameter: 1 DEBUG hibernate.type.StringType - binding 'test' to parameter: 2 DEBUG hibernate.type.TimestampType - binding '2013-03-04 06:13:02' to parameter: 3 DEBUG hibernate.type.StringType - binding 'dw' to parameter: 4 DEBUG hibernate.jdbc.AbstractBatcher - about to close PreparedStatement (open PreparedStatements: 1, globally: 1) DEBUG hibernate.jdbc.AbstractBatcher - closing statement DEBUG hibernate.util.JDBCExceptionReporter - could not insert: [---.ReporterComments] [insert into REPORTER_COMMENTS (REPORTERID, COMMENT, COMMENT_DATE, COMMENT_BY) values (?, ?, ?, ?)] java.sql.SQLException: [BEA][SQLServer JDBC Driver][SQLServer]Cannot insert the value NULL into column 'comment_id', table 'CHT.dbo.reporter_comments'; column does not allow nulls. INSERT fails.

謝謝!

+0

由於我想不出任何其他的解釋,我需要問,你是否絕對確信你是從數據庫客戶端連接到Java應用程序的同一個數據庫? – 2013-03-04 12:01:25

回答

3

是否您的comment_id列實際上是IDENTITY列?如果不是,那麼這就是你的問題,因爲Hibernate在使用身份生成器時不會在插入語句中包含comment_id列,而依賴於數據庫來生成值。

相關問題