2

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

     <?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,我只是将我的项目构建路径指向我手动导入所有休眠库的用户库。

4

2 回答 2

0

您需要将映射添加到您的 Eclipse IDE。为此,导航到 XML -> XML Catalog 菜单。然后你需要添加一个条目。对于位置,您需要指定 dtd 文件所在的位置。有一种方法可以在 jar 中查找文件,但目前我找不到如何去做。对于密钥类型,您可以根据您拥有的关键字选择 Public ID 或 System IDPUBLICSYSTEM。然后对于您要输入的密钥-//Hibernate/Hibernate Configuration DTD 3.0//EN,可选择http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd在备用网址字段中提供地址。

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

于 2012-05-01T20:49:18.500 回答
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 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" " http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd ">

对此

!DOCTYPE hibernate-configuration SYSTEM "classpath:///hibernate-configuration-3.0.dtd">

(请注意,我必须删除前导小于字符才能使 !DOCTYPE 显示在此答案中......所以请务必在第二行的开头重新输入)

我将“在线”和“离线”设置都保存在 xml 底部的注释中,以便来回切换。

于 2015-09-07T14:53:57.843 回答