Hibernate - вопрос по маппингу и подчеркиванию в IDE
Использую Hibernate - 5.4.10.Final IDE - IDEA Enterprise.
Конфиг хибера
<property name="hibernate.dialect">org.hibernate.dialect.MySQL8Dialect</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/db_example</property>
<property name="connection.username">root</property>
<property name="connection.password">*****</property>
<property name="show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
Проблема в следующем подчеркивает красным, таблички и их поля в коде.
Но все компилится и работает нормально!!
Все поля и таблицы с аннотациями как и положено. К базе коннект есть. Классы добавлены в конфиг
Configuration configuration = new Configuration()
.addAnnotatedClass(DailyReport.class)
.addAnnotatedClass(Car.class)
.configure();
Если добавляю в hibernate.cfg.xml - маппинг вроде :
<mapping class="model.DailyReport"/> <mapping class="model.Car"/>
подчеркивания исчезают.
Почему так происходит и как убрать эти гребанные подчеркивания ( без дублирования маппинга в XML конфиге ) якобы он ("Cant resolve symbol car")
Почему у меня не компилится и возникают ошибки при обращении к таблицам в базе, если я убираю аннотейтед класс ( new AnnotatedConfig - вообще у меня не видит ) и оставляю только маппинг в XML.
Configuration configuration = new Configuration() .configure();
И да, когда я добавляю маппинг, он в персистансе отображает имена таблиц почему-то не правильно, не так как указано в аннотации к POJO классам.
Ответы (2 шт):
Данный ответ не является ответом к вопросу, а лишь помощь с опитимизацией кода.
Если вы хотите вернуть типизированный список, то лучше это сделать с использованием TypedQuery:
//Get All Cars
public List<Car> getAllCars(){
List<Car> list = new ArrayList<>();
try {
session = HibernateUtil.getSessionFactory().openSession();
transaction = session.beginTransaction();
TypedQuery<Car> query = session.createQuery("from Car", Car.class);
list = query.getResultList();
session.clear();
session.close();
} catch (Exception e) {
if (transaction != null) {
transaction.rollback();
}
e.printStackTrace();
}
return list;
}
Добавлять mapping в hibernate.cfg.xml надо, потому что ваша программа не может сама находить сущности, как это возможно при работе со Spring. Добавляя объекты в маппинг, вы говорите программе какие объекты участвуют при отправке данных в базу данных.


