我有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,如果這是在連接的唯一表?
任何幫助,將不勝感激。