代码之家  ›  专栏  ›  技术社区  ›  bsr

序列号的JPA序列

  •  4
  • bsr  · 技术社区  · 14 年前

    我想知道是否有一种干净的(或本地的)方法来生成一个表的序列,并将其用作序列号。它需要是连续的(1、2、3…等),并避免任何可能的争用/事务问题(如果多个用户试图同时保持)。它不需要是主键。

       @Id
        private Long id;
    
        private Long serialNumber;
    

    谢谢。

    4 回复  |  直到 14 年前
        1
  •  2
  •   Pascal Thivent    14 年前

    我想知道是否有一种干净的(或本地的)方法来生成一个表的序列,并将其用作序列号。

    据我所知,不,不是非 Id 字段。

    但是,您可以使用具有适当生成器策略的专用实体,并在需要时持久化一个新实例,以从中获取下一个ID。

    另一个选项是模拟表生成器策略,并使用本机SQL从中读取下一个ID并递增。

        2
  •  1
  •   Julio Faerman    14 年前

    @id@generatedvalue(策略=标识)?

        3
  •  1
  •   DataNucleus    14 年前

    DataNucleus支持在非ID字段上使用@GeneratedValue。