【问题标题】:Is it possible to create and use sequence generator in JPA / Hibernate without a column?是否可以在没有列的情况下在 JPA/Hibernate 中创建和使用序列生成器?
【发布时间】:2014-12-18 18:51:03
【问题描述】:

我正在使用 JPA (Hibernate),我想创建一个序列,例如这样。

CREATE SEQUENCE my_seq
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 999999
  START 1;

不应将此序列分配给特殊的列或表。我只是希望能够查询下一个值:

  SELECT nextval('my_seq')

通过这样做,我很有可能为我喜欢的任何东西生成唯一的 ID。

顺便说一句:我使用的是 Hibernate 4.2 和 PostgreSQL 9.3

【问题讨论】:

  • 查询这个可以,还可以创建?
  • 您有时需要 SQL 脚本或数据库设置/迁移工具(如 FlywayDB 或 Liquibase)。我会立即使用它们,而不是依赖 Hibernate 来做到这一点。
  • 我已经在使用 Liquibase,对此我很满意,但我想保留更改 persistence.xml 以进行创建的可能性。

标签: java hibernate postgresql jpa sequence


【解决方案1】:
@Entity
public class Event implements Serializable {
  @SequenceGenerator(name="Event_Seq", sequenceName="Event_Seq", initialValue = 1, allocationSize = 1)
  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "Event_Seq")
  @Id
  private Long id;
}

您可以通过脚本创建Event_Seq,或者将其留给 Hibernate 创建(前提是您使用的是模式生成)。您还需要支持序列的数据库。

【讨论】:

  • 我不想创建一个单独的实体只是为了使用一个序列。
  • 您不必这样做。这只是一个例子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多