我发誓我以前做过这个并且工作正常,但似乎我的查询(下面)我无法映射两个相同名称的列(在本例中为'email')即使使用在我的查询中“as”。我也试过没有“as” - 只有'u.email assessorEmail'并且该查询也能正常工作,但是遇到同样的问题,我调试时该字段不会出现在我的结果中。
getQueryRunner().query("SELECT u.email AS assessorEmail, f.formid, f.firstName, f.surname, f.email, f.valid, f.invalidreason FROM users AS u RIGHT JOIN userforms AS uf ON u.id=uf.user LEFT JOIN forms AS f ON uf.form=f.formid WHERE u.role=? AND f.submitted=1 AND f.valid=0 ORDER BY u.email", new MapListHandler(), Role.ASSESSOR);
MySql结果:
assessorEmail formid firstName surname email valid invalidreason
assessor@test.com 547 John Doe user@test.com 0
Eclipse->检查变量:
[{valid=false, invalidreason=, email=user@test.com, surname=Doe, firstName=John, formid=547}]
如果我从查询中删除f.email,则u.email会成功显示为“email”(仍然不是评估者电子邮件)。
这是DbUtils的事吗?一个QueryRunner的东西?甚至是MySql Java连接器的事情?我确定我在这里遗漏了一些非常明显的东西......
答案 0 :(得分:1)
经过一番挖掘后,我发现了此问题http://bugs.mysql.com/bug.php?id=32504的错误列表。似乎是连接器的问题。
将“useOldAliasMetadataBehavior = true”作为参数添加到JDBC URL中就可以了。