2

hibernate 4.1.3 の新しいマルチテナント機能の使用に問題があります JPA2 で Glassfish 3.1 を使用し、プロバイダーとして Hibernate 4.1.3 を使用しています。

これは私のpersistence.xmlです

<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="AuroraServicePU" transaction-type="JTA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>jdbc/sqlserver/Aurora</jta-data-source>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
            <property name="hibernate.show_sql" value="false"/>
            <property name="hibernate.default_batch_fetch_size" value="100"/>
            <property name="hibernate.cache.use_second_level_cache" value="false"/>
            <property name="hibernate.cache.use_query_cache" value="false"/>
            <property name="hibernate.tenant_identifier_resolver" value="org.dna.aurora.web.TenantResolver" />
            <property name="hibernate.multiTenancy" value="DISCRIMINATOR" />
        </properties>
    </persistence-unit>
</persistence>

これは、アプリケーションをデプロイしようとしたときに発生する例外です。

INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final} INFO: HHH000412: Hibernate Core {4.1.3.Final} INFO: HHH000206: hibernate.properties が見つかりません INFO: HHH000021: Bytecode provider name: javassist INFO: HHH000204: Processing PersistenceUnitInfo [ name: AuroraServicePU ...] SEVERE: クラス org.glassfish.persistence.jpa.JPADeployer 準備メソッドの呼び出し中に例外が発生しました SEVERE: アプリの準備中に例外が発生しました SEVERE: ログ メッセージが null です。org.hibernate.engine.jdbc.internal.JdbcServicesImpl$MultiTenantConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcServicesImpl.java:260) での java.lang.NullPointerException org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:117) でorg.hibernate.service.internal.StandardServiceRegistryImpl.

SEVERE: アプリの準備中の例外

更新: ドキュメントをもう一度読んだところ、次の重要な情報が含まれていることに気付きました。

DISCRIMINATOR 分割 (ディスクリミネーター) アプローチに関連します。この戦略を使用して、テナント識別子なしでセッションを開こうとするとエラーになります。この戦略は、4.0 および 4.1 の Hibernate ではまだ実装されていません。そのサポートは 5.0 で計画されています。

それは、ディスクリミネーター戦略が現在利用できないことを本当に意味していますか? 多分これが全体の問題ですか?

どんな助けでも素晴らしいでしょう。ありがとう、イド。

4

1 に答える 1

0

Hibernate が接続を取得する方法を指定していません。これに関連するドキュメントを読みましたか?http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html_single/#d5e4583

具体的には: http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html_single/#d5e4658 http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US /html_single/#d5e4702

于 2012-05-24T01:03:38.787 に答える