Ich habe 3 Tabellen A
, B
und C
, die Teil einer Vererbungskette sind:Fehlerhafte Feld in jOOQ Bilanz
A
/\
B C
und wie folgt aussehen:
A(row_id)
B(row_id, a_row_id REFERENCES A(row_id))
C(row_id, a_row_id REFERENCES A(row_id))
Beachten Sie, dass die Spaltennamen sind selbe (a_row_id
)
Jetzt hole ich Record
s von B
und C
by doing:
ctx.select()
.from(
Tables.A
.leftOuterJoin(Tables.B).onKey()
.leftOuterJoin(Tables.C).onKey()
)
.where(someCondition)
.fetch()
Ich schließe ich über beide B
und C
, weil ich nicht (an dieser Stelle) wissen, welche ich suche.
Aber, wenn ich weiß, ich brauche B
zu holen und dies zu tun:
ctx.select()
.from(
Tables.A
.leftOuterJoin(Tables.B).onKey()
)
.where(someCondition)
.fetch()
Ich bekomme eine Record
, auf dem, wenn ich record.field(Tables.B.A_ROW_ID).toString()
tun, ich "b.a_row_id"
bekommen, und wenn ich record.getValue(Tables.B.A_ROW_ID)
bekomme ich den erwarteten Wert .
jedoch Wenn ich record.field(Tables.C.A_ROW_ID).toString()
tun, erhalte ich "b.a_row_id"
und record.getValue(Tables.C.A_ROW_ID)
gibt mir den erwarteten Wert von record.getValue(Tables.B.A_ROW_ID)
.
Ich denke, das passiert, weil die Spaltennamen, die sich auf die Elterntabelle beziehen, gleich sind.
Verwendet jOOQ nur den Feldnamen der Tabelle (und nicht den vollqualifizierten "table.field_name"), wenn das die einzige Tabelle im Join ist?
Jede Hilfe zu diesem würde sehr geschätzt werden.