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 で計画されています。
それは、ディスクリミネーター戦略が現在利用できないことを本当に意味していますか? 多分これが全体の問題ですか?
どんな助けでも素晴らしいでしょう。ありがとう、イド。