Postgres + Hibernate + Java UUID

mai*_*rgs 9 java postgresql uuid hibernate java-ee

我想将PostgreSQL的本机UUID类型与Java UUID一起使用.我使用Hibernate作为我的JPA提供程序和ORM.如果我尝试直接保存它,它只是在Postgres中保存为bytea.

我怎样才能做到这一点?

Ste*_*nne 10

尝试使用JDBC驱动程序的最新开发版本(目前为8.4dev-700),或等待下一个发行版本.(编辑补充:8.4-701已经发布)

发行说明提到这种变化:

将数据库uuid类型映射到java.util.UUID.这仅适用于相对较新的服务器(8.3)和JDK(1.5)版本.

  • 目前使用驱动程序版本9.2-1002和hibernate-core 3.3.1.GZ似乎失败了.https://community.jboss.org/thread/229747?_sscc=t上有一个悬而未决的问题.我也使用GORM遇到了这个问题. (2认同)

Rob*_*n P 5

这是我对Hibernate 支持的 Postgresql UUID 的回答的转贴?...我知道这个问题很老,但如果有人偶然发现它,这将帮助他们。

这可以通过向 UUID 添加以下注释来解决:

import org.hibernate.annotations.Type;
...
@Type(type="pg-uuid")
private java.util.UUID itemUuid;
Run Code Online (Sandbox Code Playgroud)

至于为什么 Hibernate 不只是将其设为默认设置,我无法告诉您...

更新:使用该createNativeQuery方法打开具有 UUID 字段的对象似乎仍然存在问题。幸运的是,createQuery到目前为止,该方法对我来说效果很好。