Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Genric-执行自动bean验证时违反了验证约束_Java_Spring_Jpa_Eclipselink - Fatal编程技术网

Java Genric-执行自动bean验证时违反了验证约束

Java Genric-执行自动bean验证时违反了验证约束,java,spring,jpa,eclipselink,Java,Spring,Jpa,Eclipselink,我想为返回的所有不同实体编写一个通用方法 邮件列表 例如:伪代码 enter code here private List<String> constraintViolationsDetected (genericentity) { Set<ConstraintViolation<?>> constraintViolations = validator.validate(?); } 2) 道实施 ----------------Persisten

我想为返回的所有不同实体编写一个通用方法 邮件列表

例如:伪代码

enter code here
private List<String> constraintViolationsDetected (genericentity) {
    Set<ConstraintViolation<?>> constraintViolations = validator.validate(?);
}

2) 道实施 ----------------Persistence.xml--------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="com.Demo.persistence" 
        transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>       
        <class>com.Demo.persistence.model.DeploymentConfiguration</class>
        <shared-cache-mode>ALL</shared-cache-mode>
        <properties>
            <property name="eclipselink.ddl-generation" value="create-or-extend-tables" />
        </properties>
    </persistence-unit>
</persistence>

org.eclipse.persistence.jpa.PersistenceProvider
com.Demo.persistence.model.DeploymentConfiguration
全部的
--------------------------------------------------------------------------------Test persistence.xml-与您共享
在此处输入代码
org.eclipse.persistence.jpa.PersistenceProvider
com.Demo.persistence.model.DeploymentConfiguration
全部的

我正在使用下面的依赖项

<!-- JPA dependencies - Start -->
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>eclipselink</artifactId>
        </dependency>
        <!-- JPA dependencies - Start -->

        <!-- Spring dependencies - Start -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
        </dependency>
        <!-- Spring dependencies - End -->
        <!-- slf4j dependencies - Start -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>com.springsource.slf4j.log4j</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>com.springsource.slf4j.api</artifactId>
        </dependency>
        <!-- slf4j dependencies - End -->
        <!-- Junits dependencies - Start -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>org.springframework.test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>org.springframework.orm</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.servicemix.bundles</groupId>
            <artifactId>org.apache.servicemix.bundles.derby</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- Junits dependencies - End -->

org.eclipse.persistence
日食
org.springframework
SpringJDBC
org.slf4j
com.springsource.slf4j.log4j
org.slf4j
com.springsource.slf4j.api
朱尼特
朱尼特
测试
org.springframework
org.springframework.test
测试
org.springframework
弹簧式
org.testng
testng
测试
org.springframework
spring上下文
org.springframework
org.springframework.orm
测试
org.apache.servicemix.bundles
org.apache.servicemix.bundles.derby
测试

为什么?为什么不在method参数上使用
@Valid
,为什么尝试创建自己的hack?请为不同的实体共享一个完整的示例。我试着使用class,object,…set,我想解释的是,你们不需要这样的方法。Bean验证已经做到了这一点。因此,您基本上是在使事情变得复杂,并尝试围绕框架工作。使用SpringMVC时,只需用
@Valid
注释
@ModelAttribute
,即可完成。还有方法参数验证,但这只适用于Hibernate验证,而不适用于eclipse链接。我已经分享了我的代码,您能解释一下如何使用注释编写验证吗。注意:我们应该在我们的演示项目中使用eclipselink和springframework,我们没有使用SpringMVC,我们需要将我们的方法公开为服务(Jersy),如果您使用Spring,您将非常努力地解决它。参考指南中解释了如何使用JSR-303验证。只需注册一个
localvalidatoryFactoryBean
。解释了如何将它与JPA结合(虽然这是针对hibernate的,但它应该适用于eclipse链接,因为它是普通的JPA)。
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="com.Demo.persistence" 
        transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>       
        <class>com.Demo.persistence.model.DeploymentConfiguration</class>
        <shared-cache-mode>ALL</shared-cache-mode>
        <properties>
            <property name="eclipselink.ddl-generation" value="create-or-extend-tables" />
        </properties>
    </persistence-unit>
</persistence>
enter code here

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
    xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="com.Demo.persistence"
        transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <class>com.Demo.persistence.model.DeploymentConfiguration </class>

        <shared-cache-mode>ALL</shared-cache-mode>
        <properties>
            <!-- Connection Properties For Test DB -->
            <property name="javax.persistence.jdbc.url" value="jdbc:derby:memory:target/CoreServicesTestDB;create=true" />
            <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
            <property name="javax.persistence.jdbc.user" value="gomobile" />
            <property name="javax.persistence.jdbc.password" value="secret" />
            <property name="eclipselink.target-database" value="Derby" />
            <property name="eclipselink.target-server" value="None" />
            <!-- General Properties -->
            <property name="eclipselink.cache.shared.default" value="false" />
            <property name="eclipselink.weaving" value="static" />
            <property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
            <property name="eclipselink.ddl-generation.output-mode"
                value="both" />
            <!-- Logging Properties -->
            <property name="eclipselink.logging.logger" value="DefaultLogger" />
            <property name="eclipselink.logging.level" value="FINEST" />
            <property name="eclipselink.logging.level.sql" value="FINEST" />
            <property name="eclipselink.logging.level.cache" value="FINEST" />
        </properties>
    </persistence-unit>
</persistence>
<!-- JPA dependencies - Start -->
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>eclipselink</artifactId>
        </dependency>
        <!-- JPA dependencies - Start -->

        <!-- Spring dependencies - Start -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
        </dependency>
        <!-- Spring dependencies - End -->
        <!-- slf4j dependencies - Start -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>com.springsource.slf4j.log4j</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>com.springsource.slf4j.api</artifactId>
        </dependency>
        <!-- slf4j dependencies - End -->
        <!-- Junits dependencies - Start -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>org.springframework.test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>org.springframework.orm</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.servicemix.bundles</groupId>
            <artifactId>org.apache.servicemix.bundles.derby</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- Junits dependencies - End -->