我目前在hibernate配置文件中将http://hibernate.sourceforge.net用作我的命名空间,这给了我以下警告:
公认的过时的hibernate名称空间 http://hibernate.sourceforge.net/。请改用名称空间 http://www.hibernate.org/dtd/。请参阅《 Hibernate 3.6迁移指南》!
因此,我尝试将hibernate.cfg.xml和所有其他* .hbm.xml文件切换为使用http://www.hibernate.org/dtd。但是,当我尝试在eclipse中使用hibernate工具生成代码时,收到以下错误消息(代码生成与其他名称空间配合正常):
org.hibernate.HibernateException:无法解析配置:C:\ dev \ workspace \ DataLoad \ hibernate.cfg.xml无法解析配置:C:\ dev \ workspace \ DataLoad \ hibernate.cfg.xml org.dom4j.DocumentException: www.hibernate.org嵌套异常:www.hibernate.org www.hibernate.org嵌套异常:www.hibernate.org org.dom4j.DocumentException:www.hibernate.org嵌套异常:www.hibernate.org www.hibernate.org嵌套异常:www.hibernate.org
这是我的hibernate.cfg.xml:
<?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/findata?tcpKeepAlive=true </property> <property name="connection.username">root</property> <property name="connection.password">xxxxxxxx</property> <property name="connection.pool_size">2</property> <property name="show_sql">true</property> <property name="dialect"> org.hibernate.dialect.MySQLDialect </property> <property name="current_session_context_class">thread</property> <property name="cache.provider_class"> org.hibernate.cache.NoCacheProvider </property> <mapping resource="conf/Alert.hbm.xml" /> <mapping resource="conf/Entity.hbm.xml" /> <mapping resource="conf/FactData.hbm.xml" /> <mapping resource="conf/TimeEvent.hbm.xml" /> <mapping resource="conf/User.hbm.xml" /> <mapping resource="conf/AlertTarget.hbm.xml" /> <mapping resource="conf/LogAlert.hbm.xml" /> <mapping resource="conf/RepeatType.hbm.xml" /> <mapping resource="conf/Schedule.hbm.xml" /> <mapping resource="conf/Task.hbm.xml" /> <mapping resource="conf/JobQueue.hbm.xml" /> <mapping resource="conf/LogTask.hbm.xml" /> <mapping resource="conf/Exclude.hbm.xml" /> <mapping resource="conf/LogNotification.hbm.xml" /> <mapping resource="conf/Job.hbm.xml" /> <mapping resource="conf/Metric.hbm.xml" /> <mapping resource="conf/EntityGroup.hbm.xml" /> <mapping resource="conf/ExtractSingle.hbm.xml" /> </session-factory> </hibernate-configuration>
我们在上次解析hibernatecfg文件时也遇到了一些问题。原因的根源是hibernate站点无法访问。在对org.hibernate.util.DTDEntityResolver类进行了一些搜索和调试之后,我意识到还有另一种方法,如何指定DTD URL:
<!DOCTYPE hibernate-configuration SYSTEM "classpath://org/hibernate/hibernate-configuration-3.0.dtd">
这意味着hibernate将从类路径加载DTD-通常包含在org / hibernate目录的hibernatejar中。
但是,我们使用的是hibernate3.5.6-我不知道这种方法在新版本中是否仍然有效-试试看。这样做的好处是您完全独立于Internet连接,代理等。