为了账号安全,请及时绑定邮箱和手机立即绑定

如何序列标识符?

如何序列标识符?

红糖糍粑 2021-06-07 10:34:49
在我们的旧架构中,我们使用了这样的 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 之外的值时遇到了一些问题。所以我们决定使用bigserialfrom postgres。我们更改了数据库并为每个表添加了一个序列并将其设置为主键。我们有很多实体,并且所有实体都使用AbstractDbBase. 而 inAbstractDbBase是 id 的定义。但是现在我们无法设置 Hibernate 以正确使用该序列。我们尝试了以下策略(对于@GeneratedValue()-annotation):GenerationType.IDENTITY:在休眠状态下创建记录时抛出异常(无法访问序列)。GenerationType.SEQUENCE: 抛出验证异常(未找到序列)。GenerationType.AUTO: 抛出验证异常(未找到序列)。我的问题是:我们如何告诉 Hibernate 使用正确的序列?(没有为每个实体写明确的序列名称)
查看完整描述

1 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

我发现了这一点:休眠无法获得下一个序列值

所以我必须使用GenerationType.IDENTITY. 现在我必须解决“没有序列许可”的问题。我已经完成了这个问题:错误:使用 Postgres 拒绝序列城市 id_seq 的权限

它现在有效。


查看完整回答
反对 回复 2021-06-10
  • 1 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信