jpa java-ee eclipselink hibernate-validator bean-validation

jpa - ¿Cómo importo javax.validation en mi proyecto Java SE?



java-ee eclipselink (2)

Estoy tratando de agregar la verificación de restricciones, como se describe aquí. Cómo especificar la cardinalidad de un @OneToMany en EclipseLink / JPA


Aquí están las dependencias que estoy usando (con Maven):

<dependencies> <!-- Bean Validation API and RI --> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.0.0.GA</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>4.0.2.GA</version> </dependency> </dependencies>

Que puedes obtener de este repositorio:

<repositories> <repository> <id>jboss</id> <name>JBoss repository</name> <url>http://repository.jboss.org/maven2</url> </repository> </repositories>


Las dependencias a partir de 2019:

<dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>6.0.16.Final</version> </dependency>

Esto arrastra de forma transitoria la dependencia de la API de Validación de Bean, por lo que ya no necesita hacer esto:

<dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.1.0.Final</version> </dependency>

Para funciones adicionales, soporte de Expression Language y CDI, es posible que necesite agregar:

<dependency> <groupId>org.glassfish</groupId> <artifactId>javax.el</artifactId> <version>3.0.1-b09</version> </dependency> <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator-cdi</artifactId> <version>6.0.16.Final</version> </dependency>

Fuente: documentación del Hibernate Validator.

Todos estos están en Maven Central Repo, por lo que no es necesario agregar el repositorio de JBoss.

Y BTW aquí está mi método de conveniencia de ejemplo:

public static <T extends Object> void validate( T object ) throws MigrationException { ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validator validator = factory.getValidator(); Set<ConstraintViolation<T>> valRes = validator.validate( object ); if( ! valRes.isEmpty() ) { StringBuilder sb = new StringBuilder("Validation failed for: "); if( object instanceof Origin.Wise ) sb.append( ((Origin.Wise)object).getOrigin() ); else sb.append(object); for( ConstraintViolation<T> fail : valRes) { sb.append("/n ").append( fail.getMessage() ); } throw new IllegalArgumentException( sb.toString() ); } }

Origin.Wise es algo así como @XmlLocation Locator JAXB.

En 2013 (el post original) las versiones fueron:

<!-- BeanValidation and Hibernate Validator. --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.4.0.Final</version> </dependency> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.el</artifactId> <version>3.0.1-b08</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator-cdi</artifactId> <version>5.4.0.Final</version> </dependency>