Мне нужно иметь дело с Java для создания ненадежного API, и я использую его с MySQL для запроса БД.Выберите префиксные столбцы из нескольких таблиц в Java с MySQL
Я довольно новичок в Java, и это может быть очень простой вопрос, но используется для фреймворков PHP, где эта проблема не существует, и мне было интересно, как это сделать на Java.
Я запрашиваю 3 таблицы, соединяющие их своими внешними ключами, и выяснил, что если две из этих таблиц имеют одинаковое имя столбца, возвращается только один из них. Один из последней таблицы, объявленный в заявлении from
. Кажется, они переопределяют.
Например, если таблицы type_application
и type_leaves
имеют как name
столбец, только name
колонна из type_leaves
будет возвращено в этом запросе:
select * from leaves, type_applications, type_leaves
where leaves.type_leave = type_leaves.id and
leaves.type_application = type_applications.id;
Теперь, я знаю, что это может быть легко решена путем указания все необходимые имена столбцов с префиксом имени таблицы (в случае, если они дублируются) и используя as
создать псевдоним:
select leaves.id, type_leaves.name as leaves_name, type_applications.name as application_name
from leaves, type_applications, type_leaves
where leaves.type_leave = type_leaves.id and
leaves.type_application = type_applications.id;
Но это не похоже на лучшее решение для меня. Я бы предпочел продолжать использовать *
, чтобы получить все поля (чего я всегда хочу).
Это также поможет получить более мелкий запрос, упростить его чтение и упростить, если я продолжаю добавлять или удалять столбцы в таблице с течением времени.
Любое решение для этого? Каков способ справиться с этим в Java?
Какая версия Java вы используете? Вы еще на Java 8? –
Nop. Использование java 7. – Alvaro
Stick с указанием всех столбцов. Это быстрее и лучше. Кроме того, используйте явный синтаксис соединения. – Strawberry