jooq getValue(String fieldName)不同表中具有相同名称的列

时间:2015-09-23 22:53:49

标签: java sql jooq

SQL:

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

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

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

执行异常:[IllegalArgumentException:字段(tblA.hostname)不包含在Row(主机名,主机名)]中

然后,另一个尝试纠正问题:

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

这不会返回所需的行为,其中clientHostname = tblA.hostname和serverHostname = tblB.hostname,它只返回两者的tblA.hostname。

如何获取两列的值?

2 个答案:

答案 0 :(得分:1)

你试过这个吗?

“SELECT tblA.hostname AS tblAhostname ,tblB.hostname AS tblBhostname FROM tblA,tblB ......”

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

答案 1 :(得分:1)

explicitly renaming columns as Erik suggested外,您还可以访问合格的列名:

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​​。