JPA Не удается разрешить столбец/IntelliJ
Я пытаюсь сопоставить некоторые классы Java, используя реализацию Hibernate JPA. Моя проблема в том, что я не могу использовать жестко закодированные столбцы Strings als. Вы можете увидеть сообщение об ошибке, которое я получил на рисунке ниже.
![enter image description here]()
Я использую OpenJPA как мой поставщик JPA по умолчанию и уже пытался его изменить.
IntelliJ Version 14.0.3
С уважением,
Ответы
Ответ 1
Вам необходимо связать свой источник данных (сначала создать источник данных в представлении базы данных, а также ваше реальное соединение с базой данных JDBC) с единицей сохранения или сеансом factory (hibernate.cfg.xml).
Следуйте инструкциям ниже, и предупреждения исчезнут:
- Откройте окно инструмента Persistence (View | Tool Windows |
Упорство).
- Щелкните правой кнопкой мыши необходимый модуль, блок персистентности или
session factory и выберите Assign Data Sources в контекстном меню.
- В открывшемся диалоговом окне Assign Data Sources выберите источник данных
и выберите нужный источник данных. (Чтобы удалить
связь с источником данных, выберите.)
См. здесь: Связывание источников данных с сессионными фабриками и единицами продолжительности
Ответ 2
Я нашел ответ Panos полезным, но я не видел, чтобы кто-нибудь упоминал о добавлении базы данных в качестве источника данных. Возможно, эту процедуру достаточно, чтобы ее можно было принять, но если нет, то здесь я должен был сделать:
Выберите Просмотр/Инструмент Windows/База данных
Окно базы данных обычно появляется в правом верхнем углу.
В окне "База данных" щелкните зеленый знак + и выберите Источник данных /MySQL (или любой другой источник данных, который вы используете).
Появится окно Источники данных и драйверы.
Если ваша база данных отсутствует в списке, используйте пустую форму, чтобы добавить следующее:
Для поиска драйвера JDBC для IDEA может потребоваться некоторое время. Мне сказали, что теоретически это должно было найти это в процессе сборки maven для проекта, над которым я работал, но этого не произошло. Я снова открыл View/Tool Windows/Database и посмотрел на мою запись в MySQL. Внизу у него появилось сообщение об ошибке рядом с Драйвер:, а также ссылка MySQL. Я нажал ссылку MySQL, а IDEA отобразило всплывающее окно для извлечения Connector/J.
Несмотря на то, что флажки для Автоматическая фиксация и Автоматическая синхронизация по умолчанию были отмечены, и я оставил их таким образом, для IDEA, похоже, нужен толчок. Или, возможно, это заняло некоторое время, и я был нетерпелив.
В любом случае, сначала я дважды щелкнул по строке для моей базы данных в База данных. Это, казалось, делало это, но я не понимал, что мне нужно Persistence, и, сортируя это, по предложению соавтора я также нажал кнопку Синхронизировать (две стрелки по кругу) в База данных.
Вы также можете щелкнуть правой кнопкой мыши по своей базе данных в База данных и выбрать Синхронизировать.
Это может занять несколько секунд, но вы должны увидеть, что IDEA заполняет схему базы данных в записи в базе данных.
Наконец, я нашел ответ Panos и зафиксировал Настойчивость.
Выберите View/Tool Windows/Persistence
Окно Persistence обычно появляется в левом верхнем углу.
В окне "Сохранение" щелкните правой кнопкой мыши проект и выберите Назначить источники данных.
IDEA открывает диалог с двумя столбцами, ваш проект в левом столбце и в моем случае пустую ячейку в правом столбце. Нажмите на пустую ячейку, и IDEA должен предоставить вам раскрывающийся список, который позволяет вам выбрать только что добавленную базу данных.
Опять же, для завершения анализа источника данных может потребоваться несколько секунд, чтобы завершить анализ всех проверок.
Ответ 3
На самом деле это не ошибка, которая мешает компиляции вашего кода. Вероятно, ваша проверка орфографии включена и которая дает вам орфографическую ошибку. Если вы можете скомпилировать свой код, вы можете игнорировать этот тип сценария.
Посмотрите, что у вас нет какой-либо ошибки для другого текста, такого как @Column
, @GeneratedValue
и т.д. Это означает, что банки, использующие эти вещи, находятся в вашем пути сборки. Поэтому я думаю, что вы можете игнорировать эту ошибку.
Ответ 4
Если вы используете JPA, также важно настроить SQL Dialect как
HSQLDB вместо MySQL. Это часто сбивает с толку, потому что похоже, что MySQL - правильный диалект, но на самом деле то, что вы имеете в спящем режиме, это HSQL.
Если вы только что обновили IntelliJ 2017.13 или другие производные от этой версии (например, Webstorm) или просто повторно импортировали свой проект, это может испортить внедрение языка и необходимо вручную исправить это.
Это можно выполнить с помощью Project
Настройки → Языки и рамки
часть IDE.