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。
如何获取两列的值?
答案 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));
此解决方案使用:
DSL.field(Name, Class)
构建一个"普通SQL"字段锂>
DSL.name(String...)
构建标识符有关此API的更多信息,请参阅手册:
请注意,还有一个待处理的feature request #4578允许您按照预期的方式使用API。