我们遇到了一个问题,我们有使用 GenerationType.TABLE 生成主键的事件子类,当我们重新启动服务器时,我们会收到重复的主键错误。
我们正在使用 SQL Server 和 Hibernate 版本 3.5.1-Final。
这是我们的 Hibernate 注释的样子:
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Event {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private long eventID;
我们没有指定 allocationSize,所以我们使用默认值。 hibernate 序列表确实增加了,但它似乎在重新启动时重用了已经使用过的 ID。
最佳答案
尝试 GenerationType.AUTO 或 SEQUENCE。 AUTO 可以通过 hibernate 魔法工作,但 SEQUENCE 应该在数据库中创建一个序列,足够有趣,它将用于获取唯一 ID。 您使用的是哪个 SQL Server?
关于java - 使用 GenerationType.TABLE 在重新启动时 hibernate 重复主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2806689/