java - 在 Hibernate 4 中定义默认类型映射

标签 java hibernate mapping uuid

我需要定义/覆盖默认的hibernate 映射来解决java.util.UUID 默认映射的问题。

我一直在查看与此主题相关的几条评论:此处 Postgresql UUID supported by Hibernate?Postgres + Hibernate + Java UUIDPersisting UUID in PostgreSQL using JPA和 Hibernate 文档。

但是注释更简单的解决方案; @Type(type="pg-uuid") 之类的东西对我不起作用,因为我需要使用不同的数据库(例如 H2)运行

所以我需要的是“将 org.hibernate.type.PostgresUUIDType 注册为所有公开为 java.util.UUID 的属性的默认 Hibernate 类型映射”,正如在一些评论中所说的那样。

可悲的是,在检查了文档之后,我仍然不知道如何去做。

能否请您解释或指出有关如何覆盖 Hibernate 4.2 中的默认类型映射的更详细信息?

谢谢,问候,

最佳答案

我发现的最佳解决方案是定义一个自定义类型,该类型将根据环境变量进行切换,类似于此处所做的:

https://zorq.net/b/2012/04/21/switching-hibernates-uuid-type-mapping-per-database/

所以我定义了一个 MyUuid 类,用 @Type(type="whatever") 注释实体中的相关 UUID 字段,并且在实体级别,我定义了新的映射

@TypeDef(name="whatever", defaultForType = UUID.class, typeClass = MyUuid.class)

关于java - 在 Hibernate 4 中定义默认类型映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16033097/

相关文章:

mapping - 在英国,如何根据 GPS 坐标找到地址?

java - 我可以在已部署的 JBoss 应用程序中启用调试地址吗?

c# - 我对 COM 和跨平台兼容性感到困惑

java - 随机获取 JDBCConnectionException

java - 如何动态更改持久性单元?

java - 我的java概念有什么问题吗?

3d - 将 2D 屏幕坐标取消投影到 3D 坐标

c# - 对 map 使用什么控件

java - WebDriver异常: disconnected: unable to connect to renderer even on providing correct path of latest chromedriver

java - 在 windows 中从 java 中取消打印机队列中的文档