我需要定义/覆盖默认的hibernate 映射来解决java.util.UUID 默认映射的问题。
我一直在查看与此主题相关的几条评论:此处 Postgresql UUID supported by Hibernate?和 Postgres + Hibernate + Java UUID和 Persisting 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/