2014-02-24 30 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查询可以编译,但是我仍然看不到执行它们的结果。