【问题标题】:Hibernate + MSSQL, Cannot insert the value NULL into columnHibernate + MSSQL,无法将值 NULL 插入列
【发布时间】:2013-02-18 11:33:58
【问题描述】:

拥有 Hibernate 和 MSSQL 环境。我遇到了错误: '无法将值 NULL 插入到列 'comment_id'、表 'CHT.dbo.reporter_cmets' 中;列不允许空值。插入失败。 休眠配置:

<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 客户端进行插入:

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

它非常适合我。

休眠日志:

调试 hibernate.SQL - 插入 REPORTER_COMMENTS(REPORTERID、COMMENT、COMMENT_DATE、COMMENT_BY)值(?、?、?、?) DEBUG hibernate.jdbc.AbstractBatcher - 准备语句 调试 hibernate.persister.entity.AbstractEntityPersister - 脱水实体:[---.ReporterComments#] 调试 hibernate.type.LongType - 将“15119”绑定到参数:1 调试 hibernate.type.StringType - 将“测试”绑定到参数:2 调试 hibernate.type.TimestampType - 将“2013-03-04 06:13:02”绑定到参数:3 调试 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 Driver][SQLServer]无法将值 NULL 插入列 'comment_id',表 'CHT.dbo.reporter_cmets';列不允许空值。插入失败。

谢谢!

【问题讨论】:

  • 既然我想不出任何其他解释,我需要问一下;您确定您从 Java 应用程序连接到与从数据库客户端连接到同一个数据库吗?

标签: java sql-server hibernate


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 2021-10-31
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多