2014-02-07 51 views
1

在網上進行了很多搜索之後,我還沒有找到解決方案。 我在WebLogic 10.3.6上使用JPA 2。 工作一切良好,在Tomcat:Weblogic 10.3.6上的Spring-MVC-4 + JPA 2 + Hibernate Validation 5.0.2

@RequestMapping(value="/createUser", method = RequestMethod.POST) 
public String create(@Valid Utente utente, BindingResult result) 


但是當我部署到WebLogic我得到這個異常:

java.lang.AbstractMethodError: org.apache.openjpa.persistence.PersistenceProviderImpl.getProviderUtil()Ljavax/persistence/spi/ProviderUtil; 
at javax.persistence.Persistence$PersistenceUtilImpl.isLoaded(Unknown Source) ~[javax.persistence_1.1.0.0_2-0.jar:2.0.3] 
at org.hibernate.validator.internal.engine.resolver.JPATraversableResolver.isReachable(JPATraversableResolver.java:56) ~[hibernate-validator-5.0.2.Final.jar:5.0.2.Final] 


這是pom.xml中:

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-webmvc</artifactId> 
    <version>4.0.0.RELEASE</version> 
</dependency> 
... 
<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-validator</artifactId> 
    <version>5.0.2.Final</version> 
</dependency> 

謝謝提前

+0

我想你搞砸了在進口檢查@Valid是什麼 – Zeus

+0

@Valid幫助我通過把註釋來驗證表單在模型上 –

回答

1

通過將在validation.xml中解決:

<?xml version="1.0" encoding="UTF-8"?> 
<validation-config 
    xmlns="http://jboss.org/xml/ns/javax/validation/configuration" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration validation-configuration-1.1.xsd" 
    version="1.1"> 

    <traversable-resolver>CustomTraversableResolver</traversable-resolver> 

</validation-config> 

和實施:

public class CustomTraversableResolver implements TraversableResolver { 

    @Override 
    public boolean isReachable(Object traversableObject, Node traversableProperty, Class<?> rootBeanType, Path pathToTraversableObject, ElementType elementType) { 
     return true; 
    } 

    @Override 
    public boolean isCascadable(Object traversableObject, Node traversableProperty, Class<?> rootBeanType, Path pathToTraversableObject, ElementType elementType) { 
     return true; 
    } 
} 
0

就像說here,@MDS響應是一個解決辦法,因爲你應該知道,這可能會導致大量實體來在驗證了一個對其他實體沒有加載延遲引用的bean時從數據庫加載。

我建議修改的weblogic-application.xml中超載正確的罐子:

<wls:prefer-application-packages> 
    <wls:package-name>javax.persistence.*</wls:package-name> 
    <wls:package-name>org.eclipse.persistence.*</wls:package-name> 
</wls:prefer-application-packages>  
相關問題