18

Hibernate 3.6.7 から 4.1.2 に、Hibernate Tools 3.2.0 から 3.5.0 にアップグレードしようとしています。

Ant を使用して DB 作成スクリプトを生成します。

     <hibernatetool destdir="${target}">
        <jpaconfiguration persistenceunit="stdcmpOrderPersistenceUnit" propertyfile="@{propertyfile}"/>
        <classpath refid="@{classpathid}"/>
        <!-- the file name is relative to $destdir -->
        <hbm2ddl outputfilename="@{output}" format="true" export="false" drop="false"/>
     </hibernatetool>

永続化ユニットは次のようになります。

<persistence-unit name="stdcmpOrderPersistenceUnit" transaction-type="JTA">

    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>jdbc/lakshmi_stdcmp</jta-data-source>
    <mapping-file>META-INF/stdcmpOrderNamedQueries.xml</mapping-file>

    <class>ch.ethz.id.wai.lakshmi.stdcmp.persistency.PersistentOrder</class>

    <exclude-unlisted-classes>true</exclude-unlisted-classes>

    <properties>
        <property name="hibernate.show_sql" value="false"/>
        <property name="hibernate.format_sql" value="false"/>
    </properties>

</persistence-unit>

アップグレード後、次のエラーが発生します。

[hibernatetool] org.hibernate.service.jndi.JndiException: Error parsing JNDI name [jdbc/lakshmi_stdcmp]
[hibernatetool] javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial

PersistenceUnit に関するすべての情報が利用可能であるにもかかわらず、Hibernate が JNDI 名を解決しようとするのはなぜですか? 古いバージョンでも問題はありませんでした。

いずれにしても、NamingFactory を指定するにはどうすればよいでしょうか? (そしてどれ?)

4

2 に答える 2

61

私は同様の問題を抱えていました。具体的には「JNDI名の解析エラー」を引き起こしました.session-factoryタグから空の名前属性を削除するだけで簡単に修正できました。

私のhibernate.cfg.xmlには

<session-factory name="">

これは自動生成されたので、属性を削除しましたname

この修正はここにあります: https://forum.hibernate.org/viewtopic.php?f=1&t=1014760

于 2012-11-06T16:05:38.420 に答える
3

問題は休止状態ツールからのものです。JNDI を介して構成された jta データソースを持つ永続ユニットを使用するように休止状態ツールを構成しました。Ant タスクが JNDI と通信するには、ファクトリの URL とプロバイダーを指定する必要があります。データソースが構成されているアプリケーション サーバーのネーミング ファクトリ クラスを使用します。

それが役に立てば幸い。

于 2012-11-06T17:09:49.733 に答える