java.lang.ClassNotFoundException org.hibernate.engine.jdbc.connections.spi.MultiTenantConnectionProvider

标签 java hibernate maven jpa

早上好,我正在尝试实现一个 Multi-Tenancy Java 项目(Primefaces、EJB、Hibernate 5/JPA - Postgres)。

pom.xml

<dependency>
       <groupId>org.hibernate</groupId>
       <artifactId>hibernate-entitymanager</artifactId>
       <version>5.0.7.Final</version>
       <scope>provided</scope>
</dependency>

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence>
<persistence-unit name="myDS" transaction-type="JTA">

    <jta-data-source>java:/myDS</jta-data-source>

    <class>com.arkin.erpmodel.general.entities.AccountingDocumentType</class>
    <class>com.arkin.erpmodel.general.entities.AccountingOperation</class>
    <class>com.arkin.erpmodel.general.entities.AccountingYear</class>
    <class>com.arkin.erpmodel.general.entities.AccountingYearPeriod</class>    

    <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
            <property name="hibernate.multiTenancy" value="SCHEMA"/>
            <property name="hibernate.tenant_identifier_resolver" value="com.arkin.erpmodel.multitenancyprovider.SchemaResolver"/>
            <property name="hibernate.multi_tenant_connection_provider" value="com.arkin.erpmodel.multitenancyprovider.MultiTenantProvider"/>
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
            <property name="org.hibernate.type" value="debug" />
            <property name="hibernate.cache.use_second_level_cache" value="true" />
            <property name="hibernate.cache.use_query_cache" value="true" />
            <property name="hibernate.cache.infinispan.statistics" value="false" />
            <property name="hibernate.order_inserts" value="true"/>
            <property name="hibernate.jdbc.batch_size" value="20"/>
            <!-- Turn on entity and query cache statistics in the admin console -->
            <property name="hibernate.generate_statistics" value="false" />
            <!-- store entries in the cache in a more human friendly format - helps when interpreting logs -->
            <property name="hibernate.cache.use_structured_entries" value="false" />
            <!-- MultiTenancy -->           
    </properties>    
  </persistence-unit>
</persistence>

Maven Dependencies

我可以帮助了解为什么无法识别 MultiTenantConnectionProvider 类?

最佳答案

如果您检查 hibernate-entitymanager 中的自述文件,它会显示

Hibernate's JPA support has been merged into the hibernate-core module, making this hibernate-entitymanager module obsolete. This module will be removed in Hibernate ORM 6.0. It is only kept here for various consumers that expect a static set of artifact names across a number of Hibernate releases. See https://hibernate.atlassian.net/browse/HHH-10823

现在,您需要使用 hibernate-core

MultiTenantConnectionProvider 位于

org.hibernate.engine.jdbc.connections.spi package of `hibernate-core`

您可以包含此 Maven 依赖项:-

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.0.7.Final</version>
</dependency>

关于java.lang.ClassNotFoundException org.hibernate.engine.jdbc.connections.spi.MultiTenantConnectionProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39565592/

相关文章:

mysql - 使用 JPA/Spring/Hibernate 自动截断字符串列的方法?

java - 没有用于方案的文件系统:null

java - 如何在java中读取客户端的restful响应以进行发布

java - 使用 UTF-8 进行波兰语字符编码只能在一个 JSP 文件中使用

java - 如何在应用程序级别缓存复杂的java对象

java - Gradle通过不同的注释处理器两次生成Querydsl元数据

java - 当我在 Eclipse 中运行 Maven 项目时,出现 org.apache.maven.surefire.util.SurefireReflectionException

java - 无法让 PMD 5.2.1 检查 JSP 文件?

java - 如何删除数组合并方法中的重复项?

java - 注释是否会使运行程序变慢?