【发布时间】:2012-07-23 10:51:34
【问题描述】:
我发誓我以前做过,而且效果很好,但似乎使用我的查询(如下)我无法映射两个同名的列(在本例中为“电子邮件”),即使使用我的查询中的“as”。我也尝试过不使用“as” - 只是使用“u.emailassessorEmail”并且该查询也可以正常工作,但同样的问题是,当我调试时,该字段不会出现在我的结果中。
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”(仍然不是assessorEmail)。
这是 DbUtils 的事情吗?一个 QueryRunner 的东西?甚至是 MySql Java 连接器?我确定我在这里遗漏了一些非常明显的东西......
【问题讨论】:
-
可能是 MySQL 驱动问题。但是在 DbUtils 的这个领域也有修复(可能还有回归)(我认为主要是为了解决驱动程序的怪癖)。你能尝试不同版本的模块吗?
-
我刚刚尝试将所有内容更新到最新版本 - DBUtils、Mysql 连接器和 MySQL 本身,但不幸的是,这并没有成功。如果我能找到一个我知道曾经在其他代码中工作的组合,我可能会在以后尝试一些旧组合。