У меня есть приложение Spring Boot, работающее с Spring boot 2.2.5, mysql -connector- java версия 5.1.38
В моем приложении у меня есть следующий запрос:
SELECT
role.id AS roleid,
roles.id,
role_name,
role_description,
contact_name,
roles.employee_mail,
contact_phone
FROM
rcsa.fs_role AS ROLE
LEFT JOIN rcsa.fs_customer_roles_external AS roles
ON roles.fs_role_id = role.id AND fs_customer_id = :account
LEFT JOIN rcsa.fs_business_service_contacts AS cont
ON roles.employee_mail = cont.contact_email
WHERE role_type_id = 2
GROUP BY role.id,
employee_mail
Когда я запускаю этот запрос в моей mysql консоли администратора, он возвращает следующий результат: ![Correct result](https://i.stack.imgur.com/1xvzv.png)
Что я хочу, чтобы он возвратил.
Однако, когда я пытаюсь выполнить этот запрос из моего загрузочного приложения Spring, возникает исключение:
PreparedStatementCallback; исключение без категории для SQLException для SQL [выберите role.id в качестве roleid, role.id, role_name, role_description, contact_name, role.employee_mail, contact_phone из rcsa.fs_role в качестве роли слева. и fs_customer_id =? оставьте присоединение к rcsa.fs_business_service_contacts в качестве контактов на contacts.contact_email = role.employee_mail, где role_type_id = 2 группируйте по role.id, employee_mail]; SQL состояние [S0022]; код ошибки [0]; Столбец contact_email не найден .; вложенное исключение: java. sql .SQLException: столбец 'contact_email' не найден
Я попытался поменять порядок столбцов во втором предложении on, но безрезультатно. Я предполагаю, что ошибка связана с порядком моих объединений, когда я начинаю с таблицы fs_role, но это сделано специально для того, чтобы все неназначенные роли также возвращались.
РЕДАКТИРОВАТЬ:
В моем оригинале вопрос, запросы не были идентичны, поскольку я экспериментировал, чтобы увидеть, смогу ли я найти решение, проблема все еще сохраняется, когда запросы идентичны.
РЕДАКТИРОВАТЬ 2:
Я включил mysql журнал транзакций и оба запроса присутствуют в нем:
Tcp port: 3306 Unix socket: /tmp/mysql.sock
Time Id Command Argument
2020-03-06T12:39:15.942813Z 8 Query SHOW GLOBAL STATUS
2020-03-06T12:39:18.568670Z 9 Query SET autocommit=0
2020-03-06T12:39:18.569841Z 9 Query select role.id as roleid, roles.id, role_name, role_description, contact_name, roles.employee_mail , contact_phone from rcsa.fs_role as role
left join rcsa.fs_customer_roles_external as roles on roles.fs_role_id=role.id and fs_customer_id=1010499
left join rcsa.fs_business_service_contacts as cont on roles.employee_mail=cont.contact_email
where role_type_id=2 group by role.id, employee_mail
2020-03-06T12:39:18.574042Z 9 Query rollback
2020-03-06T12:39:18.574299Z 9 Query SET autocommit=1
2020-03-06T12:39:18.952383Z 8 Query SHOW GLOBAL STATUS
2020-03-06T12:39:20.048826Z 2 Query select role.id as roleid, roles.id, role_name, role_description, contact_name, roles.employee_mail , contact_phone from rcsa.fs_role as role
left join rcsa.fs_customer_roles_external as roles on roles.fs_role_id=role.id and fs_customer_id=1010499
left join rcsa.fs_business_service_contacts as cont on roles.employee_mail=cont.contact_email
where role_type_id=2 group by role.id, employee_mail
Первый запрос происходит из моего кода java, а второй из моего mysql рабочего места.