【发布时间】:2017-01-05 01:24:08
【问题描述】:
我有 3 个表 A、B 和 C,它们是继承链的一部分:
A
/ \
B C
看起来像:
A(row_id)
B(row_id, a_row_id REFERENCES A(row_id))
C(row_id, a_row_id REFERENCES A(row_id))
注意列名是一样的(a_row_id)
现在,我通过以下方式获取B 和C 中的Records:
ctx.select()
.from(
Tables.A
.leftOuterJoin(Tables.B).onKey()
.leftOuterJoin(Tables.C).onKey()
)
.where(someCondition)
.fetch()
我加入了B 和C,因为我(此时)不知道我在寻找哪一个。
但是,当我知道我需要获取 B 并执行以下操作时:
ctx.select()
.from(
Tables.A
.leftOuterJoin(Tables.B).onKey()
)
.where(someCondition)
.fetch()
我得到一个Record,如果我执行record.field(Tables.B.A_ROW_ID).toString(),我得到"b.a_row_id",如果我执行record.getValue(Tables.B.A_ROW_ID),我得到预期值。
但是,如果我执行record.field(Tables.C.A_ROW_ID).toString(),我会得到"b.a_row_id",而record.getValue(Tables.C.A_ROW_ID) 会得到record.getValue(Tables.B.A_ROW_ID) 的预期值。
我认为这是因为引用父表的列名相同。
jOOQ 是否仅使用表的 field_name(而不是完全限定的“table.field_name”),如果这是连接中唯一的表?
对此的任何帮助将不胜感激。
【问题讨论】: