【问题标题】:Hibernate duplicate primary key on restart using GenerationType.TABLE使用 GenerationType.TABLE 在重启时休眠重复主键
【发布时间】:2011-02-17 21:35:22
【问题描述】:

我们遇到了一个问题,我们有使用 GenerationType.TABLE 生成主键的 Event 子类,当我们重新启动服务器时,我们会收到重复的主键错误。

我们使用的是 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,所以我们使用默认值。休眠序列表确实会增加,但似乎在重新启动时它正在重用已使用的 ID。

【问题讨论】:

  • 我也遇到了类似的问题。我可以知道解决方案是什么吗?

标签: java sql sql-server hibernate orm


【解决方案1】:

尝试 GenerationType.AUTO 或 SEQUENCE。 AUTO 可以通过休眠魔法工作,但有趣的是,SEQUENCE 应该在数据库中创建一个序列,它将用于获取唯一 ID。 您使用的是哪个 SQL Server?

【讨论】:

  • 您不能将 GenerationType.AUTO 与 InheritanceType.TABLE_PER_SUBCLASS 一起使用。谷歌“不能使用带有 映射的标识列键生成”
猜你喜欢
  • 1970-01-01
  • 2016-01-10
  • 1970-01-01
  • 1970-01-01
  • 2018-04-10
  • 2014-11-06
  • 2014-03-27
  • 2015-12-14
  • 2016-12-06
相关资源
最近更新 更多