2012-07-20 2 views
1

전이 작업을 수행했으나 정상적으로 작동했음을 맹세 합니다만, 아래 쿼리와 같은 이름의 두 열을 매핑 할 수 없습니다 (이 경우 대/소문자 '전자 메일')을 사용할 수 있습니다. 또한 "u.email assessorEmail"을 가지고있는 "as"없이 시도했지만 쿼리가 제대로 작동하지만 동일한 문제가있을 때 디버깅 할 때 필드가 내 결과에 나타나지 않습니다.DbUtils QueryRunner에 같은 이름의 필드가 있습니다.

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 
[email protected]  547  John  Doe  [email protected] 0 

Eclipse->를 검사 변수 :

[{valid=false, invalidreason=, [email protected], surname=Doe, firstName=John, formid=547}] 

내가 쿼리에서 f.email를 제거하면 u.email가 '이메일'로 성공적으로 나타납니다 (여전히 평가자 이메일이 아닙니다).

DbUtils 문제입니까? QueryRunner의 것? 심지어 MySQL의 자바 커넥터 일이? 나는 여기에 정말로 분명한 것을 놓치고 있다고 확신한다 ...

+0

아마도 MySQL 드라이버 문제 일 수 있습니다. 그러나 DbUtils에서이 영역의 수정 (및 아마도 회귀)이있었습니다 (주로 생각하는 드라이버 단점을 해결하기 위해). 다른 버전의 모듈을 사용해 볼 수 있습니까? – Thilo

+0

DBUtils, MySQL Connector 및 MySQL 자체를 최신으로 업데이트하려고 시도했지만 불행히도 그 트릭을 수행하지는 못했습니다. 나중에 다른 코드에서 작동하는 데 익숙한 것을 발견하면 나중에 더 오래된 조합을 시도해 볼 수 있습니다. – Moo2u2

답변

1

좀 더 파고 가면서이 문제에 대한 버그 목록을 찾았다. http://bugs.mysql.com/bug.php?id=32504. 커넥터에 문제가있는 것 같습니다.

"useOldAliasMetadataBehavior = true"를 JDBC URL에 매개 변수로 추가하는 것이 트릭입니다.

관련 문제