【发布时间】:2016-05-10 13:46:18
【问题描述】:
我们使用 Oracle Weblogic Server 10.3.6。它在运行时在类路径中包含 OpenJPA 和 EclipseLink。我们在 commEnv.cmd 中使用以下行来激活 JPA2:
set PRE_CLASSPATH=BEA_HOME\modules\javax.persistence_1.1.0.0_2-0.jar;
%BEA_HOME%\modules\com.oracle.jpa2support_1.0.0.0_2-1.jar
当我们将 Bean Validation 与 validator.validate() 一起使用时,会出现以下 AbstractMethodError:org.apache.openjpa.persistence.PersistenceProviderImpl.getProviderUtil()Ljavax/persistence/spi/ProviderUtil;
它有效,我们配置 javax.persistence_1.0.0.0_1-0-2.jar 而不是 javax.persistence_1.1.0.0_2-0.jar,但我们需要 2.0。很明显,Validation Provider 使用 OpenJPA,但它应该使用 Eclipselink。
在开发时,我们使用 Hibernate Validator。但是哪个验证提供者使用了 Weblogic,验证提供者如何强制使用 Eclipselink 作为持久性提供者?错误信息是什么意思?
【问题讨论】:
-
为什么 BeanValidation API 实现会使用任何 JPA 实现?是什么让你这么说?说它的堆栈跟踪在哪里? JPA 提供者可以使用 BeanValidation API 实现......即相反
-
当我调用 hibernate.ValidatorImpl.validate() 时,它会返回一条错误消息:org.apache.openjpa.persistence.PersistenceProviderImpl.getProviderUtil()Ljavax/persistence/spi/ProviderUtil。这意味着,休眠验证器使用持久性提供程序。有什么想法吗?
-
发布堆栈跟踪 .... 在您的问题中!
-
Bean Validation 很好地使用了 JPA Provider。 hibernate.atlassian.net/browse/HV-425。而且没有堆栈跟踪。
-
用户得到一个 Throwable 并说“没有堆栈跟踪”。哈哈。调用 e.printStackTrace() 说你错了。 Java 中的所有异常都有一个堆栈跟踪。哦,好吧,因为您不想了解问题,所以您很茫然
标签: jpa weblogic bean-validation hibernate-validator