Mysql 删除重复条目';59';对于键';初级冬眠

Mysql 删除重复条目';59';对于键';初级冬眠,mysql,hibernate,jpa,spring-data,Mysql,Hibernate,Jpa,Spring Data,我对冬眠很陌生。我正在使用Hibernate和JPA。我有一个带注释的实体类和一个与该实体类相关的表 @Entity public class Test implements Serializable { @Id @GenericGenerator(name="inc" , strategy="identity") @GeneratedValue(generator="inc") private int id; private String ad

我对冬眠很陌生。我正在使用Hibernate和JPA。我有一个带注释的实体类和一个与该实体类相关的表

@Entity 
public class Test implements Serializable { 
    @Id
    @GenericGenerator(name="inc" , strategy="identity")
    @GeneratedValue(generator="inc") 
    private int id; 

    private String address; // setter getter and constructor 
}

保存此实体时,它会将数据插入数据库。但在应用程序运行过程中,另一个应用程序正在向同一个表中插入数据。当我的应用程序尝试保存数据时,会生成键“PRIMARY”异常的重复条目“59”。因此,我想使用一个生成器,它可以在数据库级别而不是应用程序级别插入数据并生成id,并且标识符必须保存回我的实体。

使用表生成器策略或序列生成器。

您不必指定生成器。您可以使用默认生成器,并且永远不要手动设置id。如果错误仍然出现,请提交合并/持久化方法

更多关于发电机的信息可以在这里找到


我同意你的看法。但是我需要一个生成器,它可以在每次插入实体之前获取最大值(id)。Bcz可能是,有人手动将数据插入表中。在那个时刻表上,生成器也失败了。请指导我。如果有人直接更新表,那么在此情况下,您需要手动处理ID,即在插入记录之前,获取最大ID并在其上执行+1并保持。
@Entity
public class Test implements Serializable { 

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id; 

    private String address; // setter getter and constructor 
}