java - 在 Weblogic12 上使用 JPA2.1 与 Hibernate 5 : java. lang.NoClassDefFoundError : Could not initialize class org. hibernate.jpa.HibernatePersistenceProvider

标签 java hibernate jpa weblogic12c

我对尝试将 JPA 2.1 PersistenceManager 与 Hibernate 5 一起使用的简单任务感到非常沮丧。

我打包了一个使用 weblogic ant 任务 jwsc (weblogic.wsee.tools.anttasks.JwscTask) 构建的简单 Web 服务
但是在部署时我得到了这个NoClassDefFoundError :

[wldeploy] [BasicOperation.execute():472] : Initiating deploy operation for app, import2, on targets:
 [wldeploy] [BasicOperation.execute():474] :    myserver
 [wldeploy] Task 0 initiated: [Deployer:149026]deploy application import2 on myserver.
 [wldeploy] dumping Exception stack
 [wldeploy] Task 0 failed: [Deployer:149026]deploy application import2 on myserver.
 [wldeploy] Target state: deploy failed on Server myserver
 [wldeploy] java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.jpa.HibernatePersistenceProvider
 [wldeploy]     at java.lang.Class.forName0(Native Method)
 [wldeploy]     at java.lang.Class.forName(Class.java:348)
 [wldeploy]     at weblogic.persistence.BasePersistenceUnitInfo.getPersistenceProvider(BasePersistenceUnitInfo.java:441)
 [wldeploy]     at weblogic.persistence.BasePersistenceUnitInfo.initializeEntityManagerFactory(BasePersistenceUnitInfo.java:461)
 [wldeploy]     at weblogic.persistence.BasePersistenceUnitInfo.initializeEntityManagerFactory(BasePersistenceUnitInfo.java:454)
 [wldeploy]     at weblogic.persistence.BasePersistenceUnitInfo.init(BasePersistenceUnitInfo.java:141)

org.hibernate.jpa.HibernatePersistenceProvider 类在 hibernate-entitymanager-5.0.4.Final.jar 中提供。

我的 import2.war 确实包含这个 jar
WEB-INF/lib 以及其他东西:
hibernate-commons-annotations-5.0.0.Final.jar
hibernate-core-5.0.4.Final.jar
hibernate-entitymanager-5.0.4.Final.jar
hibernate-java8-5.0.4.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar

作为记录,这是我的persistence.xml,打包在我的WAR文件中
/WEB-INF/classes/META-INF/persistence.xml
<version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1">

    <persistence-unit name="AdminPersistenceUnit">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <properties>
            <property name="hibernate.connection.url" value="jdbc:oracle:thin:@//########:1521/xe"/>
            <property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver"/>
            <property name="hibernate.connection.username" value="#########"/>
            <property name="hibernate.connection.password" value="#########"/>
            <property name="hibernate.archive.autodetection" value="class"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>
</persistence>

最后,这里是我使用 entityManager 的地方:
public class AdminDatabaseWebservice {
    @PersistenceContext(name = "AdminPersistenceUnit")
    protected EntityManager entityManager;
}

任何帮助将不胜感激!

最佳答案

您可以尝试以下方法。

public class AdminDatabaseWebservice {

    @PersistenceUnit(unitName = "AdminPersistenceUnit")
    private EntityManagerFactory entityManagerFactory;
    .....

创建 entityManager使用 entityManagerFactory .
EntityManager entityManager = entityManagerFactory.createEntityManager();
entityManager.createQuery("from Entity").getResultList();

希望这可以帮助。

关于java - 在 Weblogic12 上使用 JPA2.1 与 Hibernate 5 : java. lang.NoClassDefFoundError : Could not initialize class org. hibernate.jpa.HibernatePersistenceProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34061059/

相关文章:

java - 处理 ExecutionException 的原因

Hibernate 和 JPA - 错误映射通过接口(interface)公开的嵌入式类

java - 使用什么级联类型来仅保存多对多映射的子级列表?

java - 对于大型 ByteBuffer,单独 SocketChannel 的并发 read() 速度较慢

java - Spring ClassCastException 与通用表单 Bean 类

java - jSeparator 外观 - 预览设计与运行文件 (netbeans)

java - 获取错误 : Unknown service requested [org. hibernate.boot.registry.classloading.spi.ClassLoaderService]

java - Hibernate:如何列出所有映射的对象?

java - 如何设置没有@id 元素的@entity?

java - 处理多个插入的最佳方法