【问题标题】:JOOQ join two tables with same column namesJOOQ 连接两个具有相同列名的表
【发布时间】: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生成元模型吗?`

标签: jooq


【解决方案1】:

元模型是使用 jooq-codegen-maven 插件生成的。 有趣的是,我发现使用:

dsl.select(table.fields())...

解决问题。我希望这种行为是默认的,但事实并非如此。

【讨论】:

  • 您为什么希望这是默认行为?你加入了一个表,为什么默认不投影它的列?
  • 因为我最后执行了.fetchInto(entityClass),所以我希望jooq会提取属于entityClass的连接列来构造实体类对象。
  • 我明白了,但是在很多你不想要这种行为的情况下,这会非常令人困惑,包括即使你的查询中有 DISTINCT 或联合等...... SQL 投影(SELECT 子句)和映射(fetch 方法)相互独立。
  • 谢谢@LukasEder,我现在明白了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 2011-12-12
  • 2013-04-19
  • 2021-07-08
相关资源
最近更新 更多