我设置了我的实体属性
@GeneratedValue
Long id;
我能够为数据库中的实体生成id。我的问题是为什么所有实体共享相同的增量数? 是不是每个表都应该从零开始计数?
答案 0 :(得分:7)
这取决于底层数据库。
GenerationType默认为AUTO,Hibernate根据数据库选择三种变体中的一种。如果您想特别使用其中一个,请将其设置为@GeneratedValue
答案 1 :(得分:2)
这与数据库有关。 JPA实现使用不同的ID生成器,具体取决于它们使用的数据库系统。例如,使用Oracle,将创建单个序列,该序列将用于为所有实体类型生成ID。默认情况下,它不会为每个实体创建序列,因为通常没有理由。相同的逻辑适用于使用序列而不是自动递增列的其他数据库系统。
我不是100%确定JPA API是否允许您更改此行为,但我知道Hibernate注释会这样做。但是,你没有告诉我们你正在使用哪个数据库或者你正在使用哪个JPA实现,所以我不能给你更多的建议。