1

我发誓我以前做过,而且效果很好,但似乎使用我的查询(如下),即使使用“as”,我也无法映射两个同名的列(在本例中为“email”)在我的查询中。我也尝试过不使用“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 连接器?我确定我在这里遗漏了一些非常明显的东西......

4

1 回答 1

1

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

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

于 2012-07-23T02:51:34.367 回答