JOOQ 连接两个具有相同列名的表
Posted
技术标签:
【中文标题】JOOQ 连接两个具有相同列名的表【英文标题】:JOOQ join two tables with same column names 【发布时间】:2021-11-25 07:00:42 【问题描述】:我正在使用运行以下 JOOQ 查询:
dsl.select().from(table).join(joinTable).on(joinCondition).where(condition).fetchInto(entityClass);
table 和 joinTable 都以 id 作为主键名称,但获取到实体类的结果包含 joinTable 的 id 和 table 的其余列。如果我重新排序表,结果是相似的,我有来自表的 ID 和来自 joinTable 的其余列。
【问题讨论】:
你不用jOOQ生成元模型吗?` 【参考方案1】:元模型是使用 jooq-codegen-maven 插件生成的。 有趣的是,我发现使用:
dsl.select(table.fields())...
解决问题。我希望这种行为是默认的,但事实并非如此。
【讨论】:
您为什么希望这是默认行为?你加入了一个表,为什么默认不投影它的列? 因为我最后执行了.fetchInto(entityClass),所以我希望jooq会提取属于entityClass的连接列来构造实体类对象。 我明白了,但是在很多你不想要这种行为的情况下,这会非常令人困惑,包括即使你的查询中有DISTINCT
或联合等...... SQL 投影(SELECT
子句)和映射(fetch
方法)相互独立。
谢谢@LukasEder,我现在明白了。以上是关于JOOQ 连接两个具有相同列名的表的主要内容,如果未能解决你的问题,请参考以下文章