【问题标题】:DbUtils QueryRunner with fields of the same name具有相同名称的字段的 DbUtils QueryRunner
【发布时间】: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 本身,但不幸的是,这并没有成功。如果我能找到一个我知道曾经在其他代码中工作的组合,我可能会在以后尝试一些旧组合。

标签: java mysql


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-08-25
    • 2013-01-30
    • 2022-01-09
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    相关资源
    最近更新 更多