我在eclipse(indigo)中有一个项目,我使用Hibernate访问SQL数据。
我已经设置了几个类并使用注释手动映射到表。我已将驱动程序jar文件(sqljdbc4.jar)添加到构建路径,并在驱动程序jar文件下输入了包含_sqljdbc_auth.dll_作为“本机库位置”的文件夹的路径(为了支持集成安全性)。
我可以使用JDBC连接到我的SQL Server 2012来访问数据,该连接使用集成安全性和我在 hibernate.cfg.xml 中定义的。
下一步,我想自动从剩余的SQL表中生成类。所以我从JBOSS站点安装了Hibernate工具,并且我正在尝试完成必要的步骤:我已经基于我的hibernate配置文件创建了一个控制台配置。现在在我的项目的Hibernate透视图中,我看到三个项目“Configuration”,“Session factory”和“Database”。在“配置”的属性中,我看到了我的连接URL和其他设置。
但是当我点击“数据库”时,我收到错误org.hibernate.exception.JDBCConnectionException: Getting database metadata
,归结为Caused by: java.lang.UnsatisfiedLinkError: no sqljdbc_auth in 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位版本时,所以我宁愿正确地执行它并根据需要进行引用。
也许可以在控制台配置中的 Classpath 选项卡下添加路径,但它看起来都是什么 - “classpath”并说我的文件夹添加到它不改变任何东西。
我想知道如何为Hibernate工具正确配置 java.library.path 。有任何想法吗?有可能吗?
答案 0 :(得分:0)
我遇到过类似的问题。在普通的Java项目中,我可以设置本机库或add a Java VM runtime parameter。使用Hibernate Tools,我可以添加sql server jdbc驱动程序(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查询会编译,但我仍然无法看到执行它们的任何结果。