在执行下面的语句时,结果记录只有表B的字段,但如果我用select(A.fields())替换select()。select(B.fields()),我得到A和A的字段B,这是预期的行为吗?我会假设所有字段都像进行常规连接一样。
DSL.using(configuration())
.select()
.from(DSL.table("{0} partition (p2)", A))
.join(B)
.on(A.ID.eq(B.A_ID))
.where(A.ID.eq(uuid))
.fetchOne()
这是jOOQ中的一个错误,原因是普通的SQL表与非纯SQL表混合在一起。 jOOQ应生成SELECT *
查询(因为纯SQL表的列对于jOOQ是未知的)。相关问题是:https://github.com/jOOQ/jOOQ/issues/7231
.select(A.fields()).select(B.fields())
FROM
子句中的所有表都是纯SQL表:
.from("{0} partition (p2)", A").join("{0}", B).on(...)