gpt4 book ai didi

java - Hibernate 实体跨表而不是每个表自动递增 id

转载 作者:可可西里 更新时间:2023-11-01 07:17:41 25 4
gpt4 key购买 nike

目前我有三个表:Company、Group、Person。

这三个表通过Company 与Group 一对多以及Group 与Person 一对多连接。

在所有三个类(Company.java、Group.java、Person.java)中,我用这种方式编写了自动递增唯一标识:

@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 计数器在三个不同的表之间共享?我应该使用额外的或不同的标签吗?

谢谢。

最佳答案

这可能是因为 hibernate 为 id 序列生成了一个表。您正在使用哪个数据库? MySQL?还是另一个不使用序列的数据库?您可以尝试使用:

 @GeneratedValue(strategy = GenerationType.IDENTITY)

关于java - Hibernate 实体跨表而不是每个表自动递增 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41749208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com