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));
此解决方案利用了:
DSL.field(Name, Class)
构造一个"plain SQL"字段
DSL.name(String...)
构造标识符
有关此 API 的更多信息可在手册中找到:
请注意,还有一个待处理的 feature request #4578 允许您按预期方式使用 API。
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));
此解决方案利用了:
DSL.field(Name, Class)
构造一个"plain SQL"字段DSL.name(String...)
构造标识符
有关此 API 的更多信息可在手册中找到:
请注意,还有一个待处理的 feature request #4578 允许您按预期方式使用 API。