1

以前にこれを行ったことがあり、正常に機能していることを誓いますが、(以下の) クエリでは、「as」を使用している場合でも、同じ名前 (この場合は「email」) の 2 つの列をマップできないようです。私のクエリで。「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 に答える