2010-10-20 74 views
2

我正在为Web应用程序使用Hibernate over SQL Server。我到目前为止正在使用“增量”生成器类,并且最近遇到了ConstraintViolation异常。使用“身份”生成器时发生Hibernate异常 - 如何使用

于是,我改变发电机的“身份”,我收到以下错误 -

无法将NULL值插入列“assessment_administration_id”,表“faip.dbo.assessment_administration”;列不允许有空值。 INSERT失败。

以下是映射 -

<class name="AssessmentAdministration" table="assessment_administration"> 
    <id name="id" type="long" column="assessment_administration_id"> 
    <generator class="identity" /> 
    </id> 
    <property name="administrationName" column="administration_name" /> 
</class> 

什么我错在这里做什么?我看了这篇文章http://www.coderanch.com/t/216051/ORM/java/Hibernate-MSSQL-identity-column,但解决方案没有发布。

+0

你可以在这里找到完整的例子..... http://www.technicalkeeda.com/hibernate-tutorial/hibernate-relationships/one-to-one-mapping-example-in-hibernate – Vicky 2012-12-09 15:52:11

回答

2

您的ID列实际上是IDENTITY列吗?如果不是,那么这就是你的问题,因为Hibernate在使用identity生成器时不会在插入语句中包含ID列,而是依靠数据库生成值。改变发电机策略后,你是否改变了表格?

+0

什么是身份证柱?我必须为此更改数据库表吗?请注意,我正在使用SQL Server 2008 – 2010-10-21 00:40:51

+1

@Zoheb An [IDENTITY](http://msdn.microsoft.com/en-us/library/aa933196%28SQL.80%29.aspx)列是列类型,允许会自动增加识别号码。由于您使用的是其他生成器,因此我假设您的ID列当前不是IDENTITY列,而且您需要更改它。 – 2010-10-21 01:17:54

+0

谢谢Pascal!看起来这应该工作。我会尝试这个并更新线程。 – 2010-10-21 02:43:50

相关问题