java - generatedValue 没有获得唯一的新值

标签 java mysql hibernate

我的 hibernate 配置如下:

Entity
@Table (name = "statuspaatelling")
public class StatusPaaTelling {

private Long statusPaaTellingId;

@Id
@Column(name = "statusPaaTellingID")
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getStatusPaaTellingId() {
    return statusPaaTellingId;
}

当我创建新元素时,它工作得很好,但现在突然它创建了已经存在的值。而且我无法创建新元素,因为我的主键有重复的条目。我正在使用 MySQL 数据库。

Duplicate entry '3155220' for key 'PRIMARY'
Error Code: 1062
Call: INSERT INTO statuspaatelling (statusPaaTellingID, something) VALUES(?, ?)

我认为这可能首先发生在我导入数据库转储并切换到使用它时。我也尝试过切换回去,但没有成功,但他们有完全相同的设置,所以我不应该在意。有人知道为什么 generatedValue 突然不起作用吗?

最佳答案

您可能正在点击this MySQL bug (7年前开业!!!)。如果您阅读评论,有人发布了使用 sed 修复 MySQL 转储的解决方法,例如:

sed -i -e 's/ AUTO_INCREMENT=[0-9]\+//' mydump.sql

您还可以通过该 sed 命令传输 mysqldump 的输出。

关于java - generatedValue 没有获得唯一的新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19029029/

相关文章:

java - 为什么接口(interface)不实现方法并重写它们?

MYSQL,查询以按条件分组获取字段中不同值的总和

java - Hibernate:如何将此标准重写为 HQL?

java - 无法使用 Mockito 2 模拟最终的 Kotlin 类

java - 声明数组长度,JAVA

mysql - 如何统计Mysql中特定列的字段数?

php - 如何显示 MySQL 中的所有数据库和 foreach 数据库显示所有表

java - 预加载相关实体

oracle - 在 Hibernate Criteria 中使用 ORACLE rowId

java - 使用开放式办公室 API 生成报告时出现 BootstrapException