【问题标题】:Create an automatically-incremented database field in Hibernate在 Hibernate 中创建一个自动递增的数据库字段
【发布时间】:2015-03-05 19:39:42
【问题描述】:

我有一个Game 类,每个游戏都有许多Round 实例(一对多)。这两个类都有一个自动递增的id 字段作为它们的主键。

我希望Round 有另一个名为ordinal 的字段,每当我创建一个与单个Game 关联的新Round 对象时,ordinal 字段将自动填充下一个序数针对特定游戏。

示例:

  • 游戏对象:Game(id=71)
  • 该游戏的第一轮对象:Round(id=389, game_id=71, ordinal=0)
  • 现在为游戏创建一个新的 Round 对象,它将是第二个,由 ordinal 字段的值表示:Round(id=514, game_id=71, ordinal=1)

Round 类在定义中有以下行(尽管我不是 100% 认为这是正确的方法):

`@Table(uniqueConstraints = @UniqueConstraint(columnNames = {"ordinal", "game_id"}))`

我可以查询该特定游戏的所有Round 对象,查看最后一个的ordinal 是什么,然后手动将新的ordinal 设置为多一个。但我想知道是否有一些内置机制可以为我做到这一点。希望有一些注释(如@UniqueConstraint)。

我正在使用 Java 7、Hibernate (JPA 2) 以及 MySQL 和 H2 数据库。

【问题讨论】:

    标签: java mysql hibernate jpa auto-increment


    【解决方案1】:

    您可以使用一个注释 @OrderColumn(name = "ordinal")。将其添加到 Round 集合中。它定义了表中列的名称,包含列表中的索引。

    【讨论】:

      猜你喜欢
      • 2013-01-27
      • 2014-01-30
      • 2014-02-03
      • 2011-03-08
      • 1970-01-01
      • 1970-01-01
      • 2015-06-06
      • 2014-10-12
      • 2012-04-19
      相关资源
      最近更新 更多