3

現在、休止状態の構成ファイルで名前空間として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 で休止状態ツールを使用してコードを生成しようとすると、次のエラー メッセージが表示されます (コード生成は他の名前空間で正常に動作します)。

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>
4

2 に答える 2

9

前回、休止状態の cfg ファイルの解析にもいくつか問題がありました。原因の根本は、休止状態のサイトにアクセスできないことでした。org.hibernate.util.DTDEntityResolver クラスをググってデバッグした後、DTD URL を指定する別の方法もあることに気付きました。

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

これは、hibernate がクラスパスから DTD をロードすることを意味します。これは通常、org/hibernate ディレクトリの hibernate jar に含まれています。

ただし、休止状態 3.5.6 を使用しています。このアプローチが新しいバージョンでも機能するかどうかはわかりません。試してみてください。これの利点は、インターネット接続、プロキシなどから完全に独立していることです。

于 2012-07-10T09:28:15.057 に答える