Java 使用jdbc返回完全限定列名的mysql

Java 使用jdbc返回完全限定列名的mysql,java,mysql,jdbc,jooq,Java,Mysql,Jdbc,Jooq,我有一个java web应用程序和mysql 5.7作为数据库,并使用jooq 3.8.2执行JDBC代码 执行以下选择: Result<Record> result = dsl.select(TABLE1.fields()) .select(TABLE2.fields()) .from(TABLE1) .join(TABL

我有一个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);
}
对我来说,问题很明显是两个表都有一些同名的列。所以我试着(举例):

但是

Table1Record tb1Rec = rec.get(TABLE1);
返回null

我的首选解决方案是,以同样的方式强制mysql返回完全限定的列名,但我找不到任何选项来实现这一点


有什么帮助吗?

嗯,这个消息不应该出现。您所显示的查询没有歧义,至少当您为
TABLE1
等使用生成的代码时是这样。您能为两个
TABLE1
TABLE2
表显示DDL吗?(即
CREATE TABLE
语句)?我的表有很多列,但正如示例所示,如果我在select中有TABLE1.ID和TABLE2.ID,则会出现问题。mysql控制台中的结果将是:-------------ID | ID |-----------------(任意值)如果mysql在结果中的表名前加前缀,则不会出现问题。但我在mysql或JDBC中都没有找到任何配置来实现这一点。嗯,很抱歉,我似乎无法重现这个问题。您唯一可以尝试的是升级到3.8.4,但是
Field tb1Field = TABLE1.FIELD1;
dsl.select(tb1Field.as("TABLE1_" + tb1Field.getName())
Table1Record tb1Rec = rec.get(TABLE1);