工作java Hibernate 3.3.2.GA离线?

时间:2012-05-01 20:23:07

标签: java xml dtd

我在离线解析Hibernate的XML时遇到了问题。我需要知道如何在没有网络连接时指定DTD。这是我的Hibernate配置。

     <?xml version="1.0" encoding="utf-8"?>
     <!DOCTYPE hibernate-configuration PUBLIC
   "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
      "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 <hibernate-configuration>
  <session-factory>
   <!-- Database connection settings -->
 <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/global_data</property>
<property name="connection.username">root</property>
<property name="connection.password">pass</property>

。 。 。

我试图在xml配置中将PUBLIC更改为SYSTEM,但仍然会出错。我正在使用eclipse IDE,我只是将项目构建路径指向用户lib,我手动将所有hibernate lib导入。

2 个答案:

答案 0 :(得分:0)

您需要将映射添加到eclipse IDE中。为此,请导航到XML - &gt; XML目录菜单。然后你需要添加一个条目。对于位置,您需要指定dtd文件的位置。有一种方法可以在jar中查找文件,但目前我找不到如何操作。对于密钥类型,您可以根据您拥有PUBLICSYSTEM的关键字选择公共ID或系统ID。然后,对于您将放置-//Hibernate/Hibernate Configuration DTD 3.0//EN的密钥,可选择在备用网址字段中提供地址http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd

为了便于使用,我发现在jar中找到dtd很有用,然后将它放在我工作区中名为resources的项目中,但指定jar位置会更正确。

答案 1 :(得分:0)

我的快速两步解决方案:

1)在hibernate.cfg.xml所在的同一个eclipse包中创建一个名为hibernate-configuration-3.0.dtd的空文件。

然后,当您在线时,将http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd中找到的文本下载/复制到您创建的空dtd文件中。

2)现在,当您离线时,从此处更改hibernate.cfg.xml中的第二行

!DOCTYPE hibernate-configuration PUBLIC&#34; - // Hibernate / Hibernate配置DTD 3.0 // EN&#34; &#34; http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd&#34;&GT;

到这个

!DOCTYPE hibernate-configuration SYSTEM&#34; classpath:///hibernate-configuration-3.0.dtd"&gt;

(请注意,我必须删除领先的少于字符才能获得!DOCTYPE在此答案中显示....所以一定要在第二行的开头输入它)

我保存了两个&#39; online&#39;和&#39;离线&#39;我的xml底部的注释中的设置,所以我可以来回切换。