我有3个表A
,B
和C
这是一个继承链的一部分:误区场jOOQ记录
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
)
现在,我取Record
s的B
和C
做:
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仅使用表(而不是完全合格的“table.field_name”)的FIELD_NAME,如果这是在连接的唯一表?
任何帮助,将不胜感激。