我有一个java web应用程序和mysql 5.7作为数据库,并使用jooq 3.8.2来执行JDBC代码。
执行以下选择:
Result<Record> result = dsl.select(TABLE1.fields())
.select(TABLE2.fields())
.from(TABLE1)
.join(TABLE2).ON(TABLE1.FK.eq(TABLE2.ID))
.fetch();
for(Record rec : result) {
Table1Record tb1Rec = rec.into(TABLE1);
Table2Record tb2Rec = rec.into(TABLE2);
}
将jooq更新到版本3.8.2后,我的日志显示以下消息:
INFO org.jooq.impl.Fields - Ambiguous match found for ....
对我而言,很清楚问题是这两个表都有一些具有相同名称的列。所以我试过(例如):
Field tb1Field = TABLE1.FIELD1;
dsl.select(tb1Field.as("TABLE1_" + tb1Field.getName())
但是
Table1Record tb1Rec = rec.get(TABLE1);
返回null。
我的首选解决方案是以相同的方式强制mysql返回完全限定的列名,但我找不到任何选项来执行此操作。
任何帮助?