GeneratedValue不会获得唯一的新值

时间:2013-09-26 13:00:29

标签: 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突然不起作用?

2 个答案:

答案 0 :(得分:1)

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

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

您还可以通过mysqldump命令管道sed的输出。

答案 1 :(得分:-1)

您是否已将该列声明为自动增量?

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

如果未将该列声明为自动增量,请按以下链接:

ALTER table - adding AUTOINCREMENT in MySQL