jooq getValue(String fieldName) 不同表中同名的列

jooq getValue(String fieldName) Columns with the same name in different tables

SQL:

SELECT tblA.hostname, tblB.hostname FROM tblA, tblB ...

尝试从每个 table 获取主机名时,它不起作用。例如,

String clientHostname = (String) result.getValue("tblA.hostname"); 
String serverHostname = (String) result.getValue("tblB.hostname");

Execution exception: [IllegalArgumentException: Field (tblA.hostname) is not contained in Row (hostname, hostname)]

然后,再次尝试纠正问题:

String clientHostname = (String) result.getValue("hostname"); 
String serverHostname = (String) result.getValue("hostname");

这不是 return 所需的行为,其中 clientHostname = tblA.hostname 和 serverHostname = tblB.hostname,两者只是 returns tblA.hostname。

如何获取两列的值?

你试过吗?

"SELECT tblA.hostname AS tblAhostname, tblB.hostname AS tblBhostname FROM tblA, tblB ..."

String clientHostname = (String) result.getValue("tblAhostname"); String serverHostname = (String) result.getValue("tblBhostname");

除了 之外,您还可以像这样访问限定的列名:

String clientHostname = result.getValue(field(name("tblA", "hostname"), String.class)); 
String serverHostname = result.getValue(field(name("tblB", "hostname"), String.class));

此解决方案利用了:

有关此 API 的更多信息可在手册中找到:

请注意,还有一个待处理的 feature request #4578 允许您按预期方式使用 API。