2016-04-23 62 views
0

我使用Hibernate的注解来生成我的数据库表:hibernate批注如何生成主键?

public class Item { 
    @Id @GeneratedValue 
    @Column(name="itemid", unique = true, nullable = false) 
    private long id; 
} 

但我不明白它是如何生成的ID。我假设它会生成与表中已有的id不同的id。但事实是,它不会持续产生id。下面的图片是从我的数据库:

enter image description here

有时,当我重建我的项目,要插入一个新的项目到数据库中,它产生的itemid是相同与之前(例如,12,已经在表中),并且由于这个原因,插入将失败,因为它不允许重复键。

任何人都知道为什么会发生这种情况?

+0

取决于数据库。你在用什么? –

+0

我正在使用mysqlworkbench – user5516371

回答

1

我遇到了同样的问题。通过将以下内容添加到我的组件中,解决了您的问题。

@GeneratedValue(strategy=GenerationType.IDENTITY) 
+0

这对我很有用!谢谢〜 – user5516371

+0

Wc。你可以请upvote答案。 – LearningPhase

+0

没问题~~~~~ – user5516371