2014-02-24 51 views
1

我有一個使用Hibernate訪問SQL數據的eclipse(indigo)項目。集成安全性的Hibernate工具和SQL服務器

我已經設置了幾個類並使用註釋來手動映射到表。我已將驅動程序jar文件(sqljdbc4.jar)添加到構建路徑,並在驅動程序jar文件(爲了支持集成安全性)下輸入了包含_sqljdbc_auth.dll_作爲「本地庫位置」的文件夾的路徑。

我可以訪問使用JDBC連接到我的SQL Server 2012的數據,它使用集成的安全性,並且我在中定義了hibernate.cfg.xml

下一步,我想自動從剩餘的SQL表生成類。所以我從JBOSS站點安裝了Hibernate工具,並試圖通過必要的步驟進行操作:我已經根據我的hibernate配置文件創建了一個控制檯配置。現在在我的項目的Hibernate透視圖中,我看到三個項目「配置」,「會話工廠」和「數據庫」。在「配置」的屬性中,我看到了我的連接URL和其他設置。

然而,當我點擊「數據庫」我收到歸結爲Caused by: java.lang.UnsatisfiedLinkError: no sqljdbc_auth in java.library.path

  1. 似乎工具忽略項目設置錯誤org.hibernate.exception.JDBCConnectionException: Getting database metadata - 它拿起罐子,而不是路徑的dll和
  2. 我看不出有什麼辦法如何將文件夾的dll添加到的java.library.path

我試着使用java.library.path使用設置文件並在控制檯配置中引用此文件。這似乎是「配置」項目中的一半工作,現在我可以看到java.library.path中包含的文件夾。但是,當我嘗試點擊「數據庫」或配置代碼生成配置時,它不會改變任何內容 - 仍然爲no sqljdbc_auth in java.library.path錯誤。

目前爲止我發現的唯一解決方法是將我的dll放入默認顯示的任何文件夾中,位於java.library.path。然後我可以配置「代碼生成配置」並創建類。然而,默認路徑中的64位dll被加載並導致衝突,例如當我需要來自另一個應用程序的32位版本時,所以我寧願按照需要正確執行並參考。

也許有可能加入控制檯配置的Classpath選項卡的路徑,但是這一切看起來它說什麼 - 「類路徑」,並說將我的文件夾,它不會改變任何東西。

我想知道如何爲Hibernate工具正確配置java.library.path。有任何想法嗎?可能嗎?

回答

0

我已經經歷過類似的問題。在一個普通的Java項目中,我可以設置本地庫或add a Java VM runtime parameter。使用Hibernate Tools,我可以添加sql server jdbc驅動程序(jar文件)。我發現,使Hibernate的工具識別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查詢可以編譯,但是我仍然看不到執行它們的結果。