Java com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:重复条目';5';对于键';初级';

Java com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:重复条目';5';对于键';初级';,java,hibernate,jpa,Java,Hibernate,Jpa,首先,我手动将10条记录添加到数据库中。然后我运行了这个项目,它出现了如下错误:键“PRIMARY”的重复条目“1”。然后我将页面刷新了九次,从键“PRIMARY”的“重复条目“2”显示到键“PRIMARY”的“重复条目“10”。最后,项目变得正常,这意味着我可以从上的11条记录将项插入数据库。怎么了 我在verison 5.10决赛中使用hibernate。我将在下面显示我的代码块: 我的困惑是项目创建的表没有设置为自动递增。详情如下: 传统jpa 符合事实的 符合事实的 使现代化 org

首先,我手动将10条记录添加到数据库中。然后我运行了这个项目,它出现了如下错误:键“PRIMARY”的重复条目“1”。然后我将页面刷新了九次,从键“PRIMARY”的“重复条目“2”显示到键“PRIMARY”的“重复条目“10”。最后,项目变得正常,这意味着我可以从上的11条记录将项插入数据库。怎么了

我在verison 5.10决赛中使用hibernate。我将在下面显示我的代码块:

我的困惑是项目创建的表没有设置为自动递增。详情如下:


传统jpa
符合事实的
符合事实的
使现代化
org.hibernate.dialogue.mysql5innodbdialogue
符合事实的
符合事实的
org.hibernate.cache.ehcache.EhCacheRegionFactory
import org.hibernate.annotations.GenericGenerator;
导入org.springframework.format.annotation.DateTimeFormat;
导入javax.persistence.*;
导入java.util.Date;
@表(name=“sssp_empoyee”)
@实体
公营雇员{
私有整数id;
私有字符串lastName;
私人字符串电子邮件;
@日期时间格式(pattern=“yyyy-MM-dd”)
私人日期出生;
私人日期和时间;
私人部门,;
@GeneratedValue(generator=“系统uuid”)
@GenericGenerator(name=“系统uuid”,strategy=“增量”)
@身份证
公共整数getId(){
返回id;
}
@交易的
公共作废保存员工(员工员工){
employee.setLateTime(新日期());
respository.saveAndFlush(员工);
}
错误信息:

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException    : Duplicate entry '5' for key 'PRIMARY'
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
sun.reflect.DelegatingConstructorAccessorImpl.__newInstance(DelegatingConstructorAccessorImpl.java:45)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java)
java.lang.reflect.Constructor.newInstance(Constructor.java:423)
com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
com.mysql.jdbc.Util.getInstance(Util.java:381)
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1015)
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2554)
com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1761)
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2046)
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1964)
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1949)
com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:147)
org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:204)
org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:45)
org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2921)
org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3421)
org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:89)
org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:560)
org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:434)
org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:337)
org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)
org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1295)
org.hibernate.jpa.spi.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:1300)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.__invoke(DelegatingMethodAccessorImpl.java:43)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java)
java.lang.reflect.Method.invoke(Method.java:498)
org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:344)
com.sun.proxy.$Proxy35.flush(Unknown Source)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.__invoke(DelegatingMethodAccessorImpl.java:43)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java)
java.lang.reflect.Method.invoke(Method.java:498)
我认为你需要像汽车一样使用策略

我认为你需要像汽车一样使用策略


MySql的工作原理如下:

@GeneratedValue(strategy = GenerationType.IDENTITY)
然后它将创建一个具有自动增量功能的表。但是默认设置
@GeneratedValue
不会为表设置增量。因此,这不是关键


现在,无论我的数据库中有多少原始记录,当我在数据库中插入一个新条目时,“重复条目…”的错误信息都不会出错。

MySql的工作原理如下:

@GeneratedValue(strategy = GenerationType.IDENTITY)
然后它将创建一个具有自动增量功能的表。但是默认设置
@GeneratedValue
不会为表设置增量。因此,这不是关键


现在,无论我的数据库中有多少原始记录,当我向数据库中插入新条目时,“重复条目…”的错误信息都不会出错。

使用
@GeneratedValue(strategy=GenerationType.IDENTITY)
使用
@GeneratedValue(strategy=GenerationType.IDENTITY)

修改表结构,使用以下查询将
自动增量
添加到表中列的id中:

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

修改表结构,使用以下查询将
auto_increment
添加到表中列的id中:

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

我估计当您重新启动项目时,id生成器总是从0开始,是吗?我手动添加到数据库中的原始数据是从1开始的。项目似乎有自己的id,但不是根据数据库的id。我已设置id自动递增。我不知道如何解决此问题。我估计您的id生成器当您重新启动项目时,ator总是从0开始,是吗?我手动添加到数据库中的原始数据是从1开始的。项目似乎有自己的id,但不是根据数据库的id。我已经设置了id自动递增。我不知道如何解决此问题。谢谢!是的,我首先使用此方法,然后它出错了,所以我对此进行了更改。最后,我发现project创建的表没有设置自动递增,其复选框为false。谢谢!是的,我第一次使用此方法,然后它出错了,所以我进行了更改。最后,我发现project创建的表没有设置自动递增,其复选框为false。