【问题标题】:How to sequence-identifier?如何序列标识符?
【发布时间】:2019-01-01 02:58:41
【问题描述】:

在我们旧的architektur中,我们使用了这样的id:

/**
  * Model for each database-object
  */
public abstract class AbstractDbBase {
    @Getter
    @Setter
    @Id
    @GeneratedValue(generator = "increment")
    @GenericGenerator(name = "increment", strategy = "increment")
    @Column(nullable = false, unique = true, updatable = false)
    private Long id;
}

但是我们在更改 Hibernate 之外的值时遇到了一些问题。 所以我们决定从postgres使用bigserial

我们更改了数据库并为每个表添加了一个序列并将其设置为主键。 我们有很多实体,它们都使用AbstractDbBase。而在AbstractDbBase中是id的定义。

但现在我们无法设置 Hibernate 以正确使用序列。 我们尝试了以下策略(针对@GeneratedValue()-annotation):

  • GenerationType.IDENTITY:通过休眠创建记录时抛出异常(无法访问序列)。
  • GenerationType.SEQUENCE:引发验证异常(未找到序列)。
  • GenerationType.AUTO:引发验证异常(未找到序列)。

我的问题是:我们如何告诉 Hibernate 使用正确的序列? (没有为每个实体写明确的序列名称)

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    我发现了这个:hibernate could not get next sequence value

    所以我必须使用GenerationType.IDENTITY。现在我必须解决“不允许序列”的问题。 我已经完成了这个问题:ERROR: permission denied for sequence cities_id_seq using Postgres

    现在可以了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多