当我们尝试在weblogic 12.1中使用JPA2 Provider作为Hibernate部署我们的应用程序时,我得到了以下异常
Caused By: java.lang.ClassCastException: org.eclipse.persistence.jpa.PersistenceProvider cannot be cast to javax.persistence.spi.PersistenceProvider
at javax.persistence.Persistence$1.isLoaded(Persistence.java:92)
at org.hibernate.validator.internal.engine.resolver.JPATraversableResolver.isReachable(JPATraversableResolver.java:57)
我在weblogic.xml中有以下条目:
<package-name>org.hibernate.*</package-name>
<package-name>javax.persistence.*</package-name>
</prefer-application-packages>
以及weblogic服务器commEnv.cmd(common / bin)中的预类路径设置。
set PRE_CLASSPATH=%MW_HOME%\modules\javax.persistence_2.0.0.0_2-0.jar;
应用程序在weblogic 11g中运行正常,具有以下前级路径设置。
PRE_CLASSPATH =“/应用/甲骨文/中间件/模块/ javax.persistence_1.0.0.0_2-0-0.jar:/apps/Oracle/Middleware/modules/com.oracle.jpa2support_1.0.0.0_2-0。罐“
有添加jar com.oracle.jpa2support_1.0.0.0_2-0.jar。 weblogic 12.1模块目录中缺少此jar。
有人可以建议如何解决weblogic 12.1中的持久性提供程序冲突问题吗?
Hibernate Jar版本:hibernate-core-4.2.0.Final.jar,hibernate-jpa-2.0-api-1.0.1.Final.jar,hibernate-validator-4.3.1.Final.jar
答案 0 :(得分:2)
从weblogic.xml
中删除以下包后,它有效 <package-name>javax.persistence.*</package-name>
12c
也不需要PRE_CLASSPATH设置