jOOQ 无法映射 PostgreSQL 列以使 JPA 满意

jOOQ cannot map PostgreSQL columns to make JPA happy

在 Spring 引导应用程序 (v. 1.3.2) 中,我尝试使用 jOOQ 生成所有映射数据库表的 POJO,以便它们也被注释为与 JPA 一起使用.数据库是 PostgreSQL。

问题在于 jOOQ 将某些类型(例如 jsonb)映射为 Object。似乎 Hibernate 不喜欢这样。我得到一个例外,如:

Caused by: org.hibernate.MappingException: property mapping has wrong number of columns: model.tables.pojos.Product type: object

有趣的是,如果我在生成的文件中将 Object 替换为 String,那么一切正常。显然这不是解决方案,否则我不明白为什么我应该使用工具来自动生成我的注释实体。

知道如何解决这个问题吗? jOOQ 是否有可能无法以更严肃的方式映射这些值(例如,jsonjsonbean13 等)。我想即使 String 也会更好。

使用 jOOQ 支持特定于供应商的数据类型

使用 jOOQ 添加对绑定供应商特定数据类型的支持的标准方法是提供转换器或数据类型绑定:

数据类型绑定页面甚至包含如何使用 PostgreSQL 的 JSON 数据类型执行此操作的示例。

使用 jOOQ 和 JPA

jOOQ 没有完全实现 JPA。如果您想将 JPA 注释的 POJO 用作真正的实体,您最好通过 Hibernate 生成它们(与 jOOQ 不同,它还注释 @OneToMany 和其他有用的属性)。

我必须为 jOOQ 指定一个转换器:

http://www.jooq.org/doc/3.7/manual/code-generation/custom-data-type-bindings/