Инструменты Hibernate и SQL-сервер со встроенной защитой

У меня есть проект в eclipse (индиго), где я получаю доступ к данным SQL с помощью Hibernate.

Я создал пару классов и использовал аннотации для ручного сопоставления с таблицами. Я добавил файл jar драйвера (sqljdbc4.jar) в путь сборки и ввел путь к папке, содержащей _sqljdbc_auth.dll_, как «местоположение собственной библиотеки» в файле jar драйвера (для поддержки интегрированной безопасности).

Я могу получить доступ к данным, используя подключение JDBC к моему SQL Server 2012, в котором используется встроенная система безопасности и которое я определил в hibernate.cfg.xml.

В качестве следующего шага я хотел бы автоматически генерировать классы из оставшихся таблиц SQL. Поэтому я установил инструменты Hibernate с сайта JBOSS и пытаюсь выполнить необходимые шаги: Я создал конфигурацию консоли на основе моего файла конфигурации гибернации. Теперь в перспективе Hibernate моего проекта я вижу три элемента: «Конфигурация», «Фабрика сеансов» и «База данных». В свойствах «Конфигурации» я вижу свой URL-адрес подключения и другие настройки.

Однако, когда я нажимаю «База данных», я получаю сообщение об ошибке org.hibernate.exception.JDBCConnectionException: Getting database metadata, которое сводится к Caused by: java.lang.UnsatisfiedLinkError: no sqljdbc_auth in java.library.path

  1. похоже, что инструмент игнорирует настройку проекта - он подхватывает jar, но не путь к dll, и
  2. Не вижу способа добавить папку с dll в java.library.path

Я пытался использовать набор java.library.path, используя файл hibernate.properties и ссылаясь на этот файл в конфигурации консоли. Кажется, это делает половину работы, так как в элементе «Конфигурация» теперь я вижу папку, включенную в java.library.path. Однако это ничего не меняет, когда я пытаюсь щелкнуть «База данных» или настроить конфигурацию генерации кода - все еще ошибка no sqljdbc_auth in java.library.path.

Единственный обходной путь, который я нашел до сих пор, — это поместить мою dll в любую папку, которая отображается по умолчанию в java.library.path. Затем я могу настроить «конфигурацию генерации кода» и создать классы. Однако 64-битная dll по пути по умолчанию загружается и вызывает конфликт, например, когда мне нужна 32-битная версия из другого приложения, поэтому я предпочел бы сделать это правильно и ссылаться по мере необходимости.

Возможно, можно добавить путь на вкладке Путь к классам в Конфигурация консоли, но все выглядит так, как написано - "путь к классам" и добавление к нему моей папки не меняется что-либо.

Я хотел бы знать, как правильно настроить java.library.path для инструментов Hibernate. Любые идеи? Является ли это возможным?


person Normunds Kalnberzins    schedule 24.02.2014    source источник


Ответы (1)


Я прошел через подобные проблемы. В простом проекте Java я мог бы установить собственную библиотеку или добавить Параметр времени выполнения виртуальной машины Java. С помощью Hibernate Tools я мог просто добавить драйвер jdbc сервера sql (файл jar). Единственный способ заставить Hibernate Tools распознать DLL — это добавить следующую строку в файл «eclipse.ini»:

-Djava.library.path=C:\Program Files\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\enu\auth\x64

Пожалуйста, попробуйте этот подход, настроив его на местоположение DLL на вашем компьютере.

P.S.: Я использую SQL Server Express 2012. Hibernate Tools теперь показывает схему базы данных в Eclipse. Но я новичок в его использовании, поэтому мои запросы HQL компилируются, но я до сих пор не вижу никакого результата от их выполнения.

person Jose Tepedino    schedule 19.07.2014