我在离线解析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导入。
答案 0 :(得分:0)
您需要将映射添加到eclipse IDE中。为此,请导航到XML - &gt; XML目录菜单。然后你需要添加一个条目。对于位置,您需要指定dtd文件的位置。有一种方法可以在jar中查找文件,但目前我找不到如何操作。对于密钥类型,您可以根据您拥有PUBLIC
或SYSTEM
的关键字选择公共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底部的注释中的设置,所以我可以来回切换。