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 -->