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

时间:2016-02-02 00:23:22

标签: hibernate postgresql jpa jooq

在Spring Boot应用程序(v.1.3.2)中,我正在尝试使用jOOQ生成映射数据库表的所有POJO,以便它们也被注释为与JPA一起使用。 db是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也会更好。

2 个答案:

答案 0 :(得分:1)

使用jOOQ

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

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

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

使用jOOQ和JPA

jOOQ并没有完全实现JPA。如果你想使用JPA注释的POJO作为真实实体,你可能最好通过Hibernate生成它们(它也注释@OneToMany和其他有用的属性,与jOOQ不同。)

答案 1 :(得分:0)