DbUtils QueryRunner与同名字段

时间:2012-07-20 07:25:29

标签: java mysql

我发誓我以前做过这个并且工作正常,但似乎我的查询(下面)我无法映射两个相同名称的列(在本例中为'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连接器的事情?我确定我在这里遗漏了一些非常明显的东西......

1 个答案:

答案 0 :(得分:1)

经过一番挖掘后,我发现了此问题http://bugs.mysql.com/bug.php?id=32504的错误列表。似乎是连接器的问题。

将“useOldAliasMetadataBehavior = true”作为参数添加到JDBC URL中就可以了。