validar recorrer que enum ejemplo definicion clase java jpa bean-validation

que - recorrer enum java



JPA: no se ha encontrado ningún validador para el tipo: enum (3)

Me encontré con la misma situación, pero con el mensaje No se pudo encontrar un validador para el tipo int. buscando en la web encontré algunas soluciones, la mayoría de ellas se centran en cambiar el tipo int al tipo Integer, porque el tipo Integer acepta nulos. como aquí: Validación - campo vacío int

desafortunadamente eso no me funcionó. pero cuando sustituí @size con @Min y @Max todo fue genial. Esperando que esto te ayude.

Tengo una clase de entidad que usa un tipo de enumeración para una de las propiedades, y obtengo la siguiente excepción cuando intento mantener la entidad:

javax.validation.UnexpectedTypeException: No validator could be found for type: model.schema.BaseYesNo

¿Alguna idea de por qué esto podría estar sucediendo? Mi idea es que, dado que es una enumeración, ya debería ser validada por el compilador, por lo que no es necesario ningún tipo de validador. (código abajo)

La propiedad de la entidad:

@Enumerated( EnumType.STRING ) @Column( name = "seeded_flag" ) private BaseYesNo seededFlag; public BaseYesNo getSeededFlag() { return this.seededFlag; } public void setSeededFlag( BaseYesNo seededFlag ) { this.seededFlag = seededFlag; }

Y la definición del tipo de enumeración:

public enum BaseYesNo { YES( "Y" ), NO( "N" ); private String yesNoVal; private static Map< String, BaseYesNo > stringToEnum = new HashMap< String, BaseYesNo >(); static { for ( BaseYesNo byn : BaseYesNo.values() ) { BaseYesNo.stringToEnum.put( byn.toString(), byn ); } } BaseYesNo( String yesNoVal ) { this.yesNoVal = yesNoVal; } public static BaseYesNo fromString( String dbValue ) { return BaseYesNo.stringToEnum.get( dbValue ); } @Override public String toString() { return this.yesNoVal; } }


Tuve el mismo error que tu. El problema con el mío era que había colocado por error @Size en mi propiedad enum:

public class PhoneNumber { @Size(max=30) //ERROR: this validation annotation is what caused my error @Nonnull @Enumerated(EnumType.STRING) private Type type; @Size(max = 30) @Nonnull private String number; public enum Type { Cell, Home, Work, Other } }

Una vez que quité el @Size erróneo, mi error desapareció.

@Enumerated no me causó ningún problema, y ​​dudo que @Column hiciera. Tal vez tuviste otra anotación de validación que pasaste por encima como yo.

Para mis pruebas, estaba usando hibernate-validator-4.1.0-Final.jar


Tuve el mismo error que usted, pero el mensaje fue "No se pudo encontrar un validador para el tipo: java.lang.Long. Pasé mucho tiempo revisando el código hasta que vi la solución anterior y, por lo tanto, eliminé todos los @Size". Las entradas del código de entidad y también el problema desaparecieron. Debería averiguar cuál es la línea ofensiva en el código fuente de la entidad pero proveniente de otra plataforma más amigable para desarrolladores (IBM i Series) esperaré hasta que se mejoren los mensajes de error Para darnos razones mejores y más precisas.