我们有使用GenerationType.IDENTITY的实体数据库,其中有一些技术问题,我用GenerationType.SEQUENCE代替了它,因为我误解了序列的作用。现在,数据库表都被编号为+1,在开始使用->之前,所有表的编号都是共享的,每个表中有巨大的空隙,因为它在整个系统中共享。
当我现在恢复到标识时,它开始对上次使用标识时停止的位置进行编号。(如果)标识能提供与序列数发生冲突的数字(如果),那么会发生什么?(遗憾的是,我无法真正测试它,因为最后一个身份条目是9000,第一个序列是25毫秒-这是因为在一个月内DB中有大量的添加/删除)
有什么方法可以从最后一个序列值开始对标识编号吗?
谢谢你的帮助。
发布于 2018-11-26 17:16:17
标识和序列之间的区别--在PostgreSQL中最少--是标识为每个表创建一个序列,而正如您注意到的那样,序列对所有表使用一个全局序列。
假设您有一个名为MyEntity (或my_entity作为表名)的实体--使用标识策略--应该有一个名为:MyEntity的序列序列可能被命名(这取决于JPA实现),如hibernate_sequence.
如果您可以访问数据库--例如使用psql --您只需检查标识序列并设置其值:。
ALTER SEQUENCE my_entity_id_sequence RESTART with_your_value;例如,with_your_value可以在哪里
SELECT max(id)+1 FROM my_entity;https://stackoverflow.com/questions/53484847
复制相似问题