#java #hibernate #gradle #orm
Вопрос:
Я не могу подключиться к своей базе данных с помощью Hibernate и Gradle с Java, и я получаю ошибку ниже. Что я делаю не так?
ошибка: не удается получить доступ к ссылочному сеансу session = SessionFactory.OpenSession(); ^ файл класса для javax.именования.Ссылка не найдена
Основной Класс
public class App{ public static void main(String[] args) { try { StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build(); Metadata meta = new MetadataSources(ssr).getMetadataBuilder().build(); SessionFactory sessions = meta.buildSessionFactory(); Session session = sessions.openSession(); Transaction t = session.beginTransaction(); t.commit(); session.close(); }catch (Exception e){ e.printStackTrace(); } } }
module-info.java
module PhoneBook { requires javafx.controls; requires javafx.fxml; requires javafx.graphics; requires org.hibernate.orm.core; exports app; }
Зависимости Gradle
implementation 'mysql:mysql-connector-java:8.0.25' implementation 'org.hibernate:hibernate-core:5.5.7.Final'
Комментарии:
1. Просто к вашему сведению, но добавление версий для тегов, которые вы перечисляете, всегда полезно всем, кто хочет помочь!
Ответ №1:
Я предполагаю, что вы используете Java 9 или выше? Если это так, то, похоже, вам не хватает директивы java.naming; в module-info.java модуля, который имеет доступ к ссылкам. Добавление этой директивы должно исправить это:
module YourModule { requires java.naming; ... }
Комментарии:
1. я пробовал это раньше, и он дал мне еще одну ошибку
Caused by: java.lang.ClassNotFoundException: java.sql.SQLException
2. Тогда ваши версии несовместимы с вашим соединителем msSQL, гибернацией и JAVA (я не проверял), или ваши пути к классам настроены неправильно, или в ваших объявлениях есть опечатки. Вам нужно проверить все три.
3. @Moka Вам также нужно будет добавить
requires java.sql
. Возможно, вам было бы лучше не использовать модульную Java и вернуться к простой старой Java на основе путей к классам. Насколько я знаю, Hibernate еще не модулирован, как и MySQL Connector/J, так что вы, скорее всего, будете играть в крота для каждой зависимости.4. @Mark Tottenveel Я не думал о возможных проблемах с модульным кодом, да, было бы намного проще использовать JAVA 8.
5. Спасибо, ребята, я удалил модуль и использовал старую версию hibernate, и теперь она работает