当前位置: 首页 > 知识库问答 >
问题:

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

胡曾笑
2023-03-14

在Spring Boot应用程序(v.1.3.2),我试图使用jOOQ生成所有映射数据库表的POJO,以便它们也被注释用于JPA。db是PostgreSQL。

问题是jOOQ将一些类型(如jsonb)映射为对象。看来Hibernate不喜欢这样。我得到一个例外,比如:

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

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

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


共有2个答案

巫新知
2023-03-14

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

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

巫马令
2023-03-14

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

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

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

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

 类似资料:
  • 主要内容:列表映射实例,程序输出结果,以下是纠正/补充内容:列表(List)是一个用于基于索引插入和删除元素的接口。当需要以用户定义的顺序检索元素时,可以使用它。 列表映射实例 在这个例子中,我们将一个对象嵌入到一个实体类中,并将其定义为一个集合类型 - 。 这个例子包含以下步骤 - 第1步: 在包下创建一个实体类,这个类包含员工, 和嵌入对象(员工地址)。注解 表示嵌入对象。 文件:Employee.java 的代码如下所示 - 第2步: 在包下创建一个

  • 问题内容: 我正在尝试将Postgres自定义类型(名为transmission_result)映射到Hibernate / JPA POJO。postgres自定义类型或多或少是字符串值的枚举类型。 我创建了一个名为PGEnumUserType的自定义EnumUserType以及一个表示postgres枚举值的枚举类。当我对一个真实的数据库运行它时,我收到以下错误:’ERROR:列“状态”的类型

  • 我有以下模式: 项目(ID,名称)项目用户(项目ID,用户ID)用户(名称,ID) 实体如下 显然是一对多。项目可以有多个用户。 现在,我的目标是编写jooq查询,在那里我可以获取已经有相应用户的项目对象。 但是当预期约15时,查询将恢复千分之一的结果

  • 我正在使用PostgreSQL 9.5和jOOQ 3.8.4进行一些测试。 具体来说,我想创建一个如下的域名: 然后我想创建一个类型,如下所示: 最后,我有一个表,其中的类型作为字段,例如: 我看到jOOQ 3.8.4将字段映射为(在表记录和POJO中都有)。我期待的是,因为域使用的是。 我错了吗?如果没有,有没有办法克服这个问题? 也许我可以使用和来注册转换器,但我不确定它是否适用于用户定义的类

  • 我一直使用Java 11的Spring Boot 2.3.3.RELEASE和Spring Boot Starter Data JPA来集成我的PostgreSQL数据库,版本12.5。我升级到了Spring 2 . 4 . 0(Hibernate Core 5 . 4 . 25 . final),现在每当我试图从数据库中获取一个具有布尔字段的实体时,它都会抛出以下异常: 这是免税的代码: 在2.

  • 问题内容: 我们有一张有很多列的大桌子。移至MySQL Cluster后,由于以下原因无法创建表: 错误1118(42000):行大小太大。不包括BLOB在内的已使用表类型的最大行大小为14000。这包括存储开销,请查阅手册。您必须将某些列更改为TEXT或BLOB 举个例子: 这是用于存储配置参数的表。我在想,我们可以将一些列合并为一个列,并将其存储为JSON对象,然后将其转换为Java对象。 例