Java 来自Hibernate中服务器的重复密钥或完整性约束冲突消息

Java 来自Hibernate中服务器的重复密钥或完整性约束冲突消息,java,mysql,hibernate,Java,Mysql,Hibernate,我刚开始冬眠。我正在尝试将记录插入MySQL数据库。当我运行Java应用程序时,以及当我更改代码中的细节并尝试再次运行它时,第一条记录被正确插入。它向我抛出重复密钥或完整性约束的错误。我的XML是 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourc

我刚开始冬眠。我正在尝试将记录插入MySQL数据库。当我运行Java应用程序时,以及当我更改代码中的细节并尝试再次运行它时,第一条记录被正确插入。它向我抛出重复密钥或完整性约束的错误。我的XML是

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.college.Student" table="STUDENT">
<id column="ID" name="id" type="long" />
<property column="STUDENT_NAME" name="name" type="string" />
<property column="DEGREE" name="degree" type="string" />
<property column="ROLL" name="roll" type="string" />
<property column="PHONE" name="phone" type="string" />
</class>
</hibernate-mapping>

似乎您还没有增加主键列,您将不得不这样做

<id column="ID" name="id" type="long" >
     <generator class="increment" />
</id>

您需要为自动生成的表主键提供生成器

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


您需要为
id
列自动递增

对于MySQL,最好的选择是使用
identity
generator,因为MySQL本机支持它

<id column="ID" name="id" type="long">
    <generator class="identity"/>
</id>

使用其他生成器不是最佳选择,因为Hibernate将使用额外的查询和表(
Hibernate\u sequence
)来增加
id

最好使用JPA,这样可以节省您维护XML文件的时间。class=“increment”和class=“native”@Syed之间的区别是什么MySQL@v.ladynev为什么?有什么特殊原因吗?@Syed查看链接:)@v.ladynev什么链接?
<id column="ID" name="id" type="long">
    <generator class="identity"/>
</id>
create table STUDENT (
    ID bigint not null auto_increment,
    ...
)