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

使用JOOQ中的RecordMapper将派生列映射到pojo

高展
2023-03-14

我有一个表tickets,其中插入ticket,并有一个createdBy字段,用于存储该记录创建者的UserId整数。在抓取过程中,我与users表和concat firstname和last name连接,并且我的DTO具有由连接的创建者名称创建的字段createdBy。如何映射派生字段?这是我的推荐信https://www.jooq.org/doc/3.13/manual/sql-execution/fetching/pojos/我似乎找不到这样一个场景

问题不在于加入。问题是映射连接后派生的createdBy字符串,而jooq生成的记录类中的字符串是整数,因为我在数据库表中存储了userId。

    List<MyTickets> mytickets = create.select(....FIELDS).from(TICKETS_).fetch().into(MyTickets.class);
    @Override
public Field<Integer> field9() {
    return Tickets.TICKETS_.CREATEDBY;
}

共有1个答案

白学
2023-03-14

在我的回答中,我假设您的计算列将被称为CREATED\u BY\u NAME,而不是CREATED\u BY,这是一个已经使用的名称,以避免混淆。

如果这是你经常做的事情,你有几个可能对你感兴趣的选择:

  • 使用视图生成此可选的“按名称创建的代码”列。许多数据库也可以插入/更新视图,因此使用视图替换表不会造成很大的损失。对于客户端逻辑,此列的来源将是透明的。如果您想使用updateablerecord,您必须告诉jOOQ的代码生成器视图的底层主键使用的是合成主键标志
  • 与上述视图类似,您可以在表上使用计算列,使用始终生成为的 语法(或您的方言使用的任何语法)。并非所有方言都支持这一点,但它是一个很好的功能,可以将表转换为视图,而不需要额外的视图对象
  • 如果希望在jOOQ代码中继续手动计算此列,可以编写自己的DTO/POJO对象,或者使用自定义代码节扩展代码生成器,在其中生成相关属性/getter/setter。这种方法只适用于可变POJO,因为您无法修改不可变POJO的构造函数
  • 还可以为所有受影响的POJO指定基类,并使用生成器策略(编程或配置)注入该基类。然后,基类可以实现所有列的getter/setter,比如CREATED\u BY\u NAME
  • 也可以改用结构类型。您不必将所有列映射到POJO中。您还可以将一些列映射到生成的POJO中(不包括CREATED_BY_NAME),并分别映射CREATED_BY_NAME列。只需保留对jOOQ结果的引用和/或记录,并对其执行几个map/intoXYZ()调用

 类似资料:
  • 我正在jOOQ中执行一个普通的sql查询,并希望将其映射到jOOQ生成的pojo中。我希望我能做这样的事情: 然而,这是行不通的。字段不会映射到构建所需的类型,因为字段定义是DB列的定义,而不是FOO表的映射类型。目前我的代码看起来像这样: 是否有某种方法可以为结果查询提供我正在获取的s,以便它能够正确映射结果?我希望在某个地方有这样的能力: 但是我找不到它。这是我忽略的东西还是不支持的? 作为参

  • 我使用的是MySQL 5.7,我想将具有一对多关系的查询映射到其代表性记录的列表。 MySQL不支持多集,JSON仿真也不起作用,因为它无法在两个层次上引用别名。 我想知道是否有另一种方法可以让我尝试在一个查询中映射多个关系。

  • 我想我必须从POJO注册一个自定义转换器来记录。有人知道怎么做吗?

  • 假设我们有一个表和。要获取所有汽车及其零件,我们使用以下查询: 问:我总是想取整车和零件排。有没有办法重用我现有的

  • 我有两个表:TABLE_A和TABLE_B,它们有一些同名的列。 我想从这两个表中检索所有列,并使用Jooq将查询结果转换为Pojo类,如下所示: 我想使用@Column注释来指定哪个列来自哪个表,但Jooq似乎不支持这个特性。我如何实现这一点? 或者这个,

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