java - Jooq:如何将 Record 映射到具有相同列名的 Pojo 类?
问题描述
我有两个表:TABLE_A 和 TABLE_B,它们有一些同名的列。
TABLE_A (ID, NAME, ADDRESS)<br>
TABLE_B (ID, NAME)
我想从两个表中检索所有列,并使用 Jooq 将查询结果转换为 Pojo 类,如下所示:
List<MyPojo> result = query.select()
.from(TABLE_A)
.join(TABLE_B)
.on(TABLE_A.ID.equal(TABLE_B.ID))
.fetchInto(MyPojo.class);
我想用@Column注解来指定哪一列来自哪张表,但是好像Jooq不支持这个功能。我该如何实现呢?
import javax.persistence.Column;
public class MyPojo {
@Column(table = "TABLE_A", name = "ID")
private String idA;
@Column(table = "TABLE_A", name = "NAME")
private String nameA;
@Column(table = "TABLE_A", name = "ADDRESS")
private String addressA;
@Column(table = "TABLE_B", name = "ID")
private String idB;
@Column(table = "TABLE_B", name = "NAME")
private String nameB;
}
或这个,
import javax.persistence.Column;
public class MyPojo {
@Column(name = "TABLE_A.ID")
private String idA;
@Column(name = "TABLE_A.NAME")
private String nameA;
@Column(name = "TABLE_A.ADDRESS")
private String addressA;
@Column(name = "TABLE_B.ID")
private String idB;
@Column(name = "TABLE_B.NAME")
private String nameB;
}
解决方案
你可以像这样使用别名
query.select(
concat(TABLE_A.NAME).as("Aname")
...)
.from(TABLE_A)
.join(TABLE_B).on(TABLE_A.ID.equal(TABLE_B.ID))
.fetchInto(MyPojo.class);
并使用带有注释的 Pojo
@Column(name = "Aname")
private String table_A_name;
推荐阅读
- c# - 将数字数组从 JS 发送到 asp.net MVC 操作
- javascript - 我可以将 JavascriptExecutor 与 Appium 一起使用吗?
- mongodb - 如何在 mongodb 数据库中执行图像搜索?
- mongodb - mongodb运行普通sql
- javascript - 使用 mongodb 中的日期获取最新数据
- excel - 用“包含”过滤数字
- javascript - 检查 Progressive Web App 是否已安装
- python - 如何在 Python 中的时间序列分析期间结合两个折线图进行数据验证
- bash - 如何将 bash 定义为默认的 Windows 终端命令处理器?
- java - ServletException in:/layouts/menu.jsp null' 在 jsp 页面的一部分中,其中存在重定向链接