我的任务是重新启动PostgreSQL数据库中许多不同的串行列的序列。通常,我会简单地使用:如何重新启动由Hibernate处理的PostgreSQL序列?
ALTER SEQUENCE serial RESTART WITH 105;
但是,似乎Hibernate正在用于处理数据库序列。我对Hibernate一无所知,但我的理解是,hibernate_sequence是所有表的全局序列。那是对的吗?
我假设我需要做以下内容,然后:
ALTER SEQUENCE hibernate_sequence RESTART WITH 105;
但我不知道后果会是什么。假设我有表A,B,C和D.这些表中的每一个都有一个类型为serial的ID列。上述hibernate_sequence上的SQL语句是否会重新启动所有表的ID列?
谢谢!
映射是用JPA完成的,例如,所有类(映射到数据库的表格)都有一个“Integer id = -1”,映射定义为“@GeneratedValue(strategy = GenerationType 。序列)”。由于数据库中只有一个序列(hibernate_sequence),并且由于所有不同表中的ID值之间存在差距,所以我认为可以安全地假设默认序列是在所有共享序列之间共享的,如前所述。由于避免了数据库传输中的一些冲突,因此需要为所有这些表重新启动序列。 – littleK 2012-08-17 15:02:47
再次感谢您的帮助,非常翔实。 – littleK 2012-08-17 15:03:34
@littleK没问题。希望它有一点帮助。合并数据库......嗯......“有趣”。特别有趣。希望你买了很多很多的杜松子酒。 – 2012-08-17 15:15:09