在我们的旧架构中,我们使用了这样的 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 的权限
它现在有效。
添加回答
举报
0/150
提交
取消