org.hibernate.exception.ConstraintViolationException

时间:2011-08-14 13:07:51

标签: hibernate hibernate-mapping

我正在使用this链接制作示例程序 我在sqlserver中有以下表:

`CREATE TABLE Student2(
STUDENT_ID int NOT NULL,
LastName varchar(255) NOT NULL,
STUDENT_NAME varchar(255),
STUDENT_ADDRESS int,
UNIQUE (STUDENT_ADDRESS))

CREATE TABLE Address2(
ADDRESS_ID int NOT NULL,
LastName varchar(255) NOT NULL,
ADDRESS_STREET varchar(255),
ADDRESS_CITY varchar(255),
ADDRESS_STATE varchar(255),
ADDRESS_ZIPCODE varchar(255))

我已在Student.hbm.xml中使用studentId类型int

<id name="studentId" type="int" column="STUDENT_ID">
    <generator class="native" />
</id>

我在Address.hbm.xml中使用了addressId类型:

<id name="addressId" type="int" column="ADDRESS_ID">
    <generator class="native" />
</id>

我正面临以下例外:

org.hibernate.exception.ConstraintViolationException: could not insert: [com.vaannila.student.Address]`
exception:`org.hibernate.exception.ConstraintViolationException: could not insert: [com.vaannila.student.Address]
Caused by: java.sql.SQLException: Cannot insert the value NULL into column 'ADDRESS_ID', table 'sample.dbo.Address2'; column does not allow nulls. INSERT fails.

请帮忙。

1 个答案:

答案 0 :(得分:1)

您的表没有自动分配的主键。实际上,您的创建表根本不定义主键。

以下是MySql创建一个带主键的表的示例,该表可以与本机生成器配置一起使用:

create table asdf(pk integer primary key auto_increment)

你可以删除你的表,然后让hibernate创建它们。