Hibernate实体跨表而不是每个表自动增加id

时间:2017-01-19 18:33:45

标签: java mysql hibernate auto-increment

目前我有三个表:公司,集团,人。

公司连接的三个表是一对多的集团,集团是一对多的人。

在所有三个类(Company.java,Group.java,Person.java)中,我用这种方式编码了自动增量唯一ID:

@Id
@Column(name = "id")
@GeneratedValue
private int id;

然后我按照以下顺序实例化所有三个类:Company,Group,Person。

将这些对象保存到我的数据库后,我注意到表中的id有问题。

显然,而不是按顺序1,2,3,4等增加公司的ID;它增加了1,4,7,10 ......

在同样的逻辑中,Group的id为2,5,8,11 ......

如何防止@GeneratedValue计数器在三个不同的表之间共享?我应该使用其他或不同的标签吗?

感谢。

1 个答案:

答案 0 :(得分:9)

这可能是因为hibernate为id序列生成了一个表。你在和哪个DB合作? MySQL的?或其他不使用序列的数据库?您可以尝试使用:

 @GeneratedValue(strategy = GenerationType.IDENTITY)