postgresql - Hibernate 在尝试使用生成的 UUID 保留 DTO 时不断询问 hibernate_sequence

标签 postgresql hibernate jpa uuid dropwizard

我正在使用 dropwizard-hibernate 和 postgres( hibernate 版本 5.3.7)

对于我的 DTO,我有一个包含 ID 字段的基本 DTO(所有 DTOS 都扩展了此类)

在数据库模式中,Id 看起来像这样

id uuid default gen_random_uuid() not null

我的ID配置是这样的:

    @Id 
    @GeneratedValue(generator="system-uuid")
    @GenericGenerator(name="system-uuid", strategy = "uuid2")
    private UUID id;

理论上这应该可行,但每次我尝试持久化一个实体时,我都会收到一条错误消息

ERROR: relation \"hibernate_sequence\" does not exist\

我已经尝试了所有方法,但没有任何效果。我只尝试使用@Id 和@GeneratedValue(根据最新的 hibernate 文档,对于 UUID 配置来说应该足够了)和许多其他注释组合,但每次我尝试坚持实体我得到丢失的序列问题。

我知道只要在数据库中添加 hibernate_sequence 表就可以“修复它”,但我根本不需要它。

最佳答案

我已经使用过它并且它按预期工作:

@Column(name = "uid")
@Generated(GenerationTime.ALWAYS)
@Type(type = "pg-uuid")
private UUID uid;

我意识到 @Generated 是遗留注释,但它似乎有效。

关于postgresql - Hibernate 在尝试使用生成的 UUID 保留 DTO 时不断询问 hibernate_sequence,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53772170/

相关文章:

django - 如何解决不存在的字段的完整性错误?

java - Hibernate ManyToMany 保存双方关系

java - 创建实体规则

java - 如何用 JPA 表示三向关系?

java - 异常描述 : An incompatible mapping has been encountered between [class sws.Entity.Appointment] 和 [class sws.entities.User]

Java SQL "ERROR: Relation "表名“不存在”

sql - 在 PostgreSQL 中获取时间戳年份

sql - 在 Postgres JOIN 查询中区分 null 和 empty

java - hbm2ddl.auto= create/create-drop 也会删除数据吗?

java - hibernate中Session类的 "update"方法和Query类的 "executeupdate"方法有什么区别,什么时候使用哪个方法?