2017-07-25 1 views
1

J'ai une classe d'objet comme qui n'a pas de champ obligatoire sauf Id. voici le code:Aucun validateur n'a pu être trouvé pour le type: java.lang.Long: Aucun validateur n'a été trouvé pour le type: java.lang.Long

Entity 
@XmlRootElement 
@Table(name = "T_HOST_SPEC") 
@Cacheable(false) 
@NamedQueries({ 
    @NamedQuery(name = HostSpec.FIND_ALL, query = "SELECT m FROM HostSpec m") 
    ,@NamedQuery(name = HostSpec.FIND_BY_IP_CONTEXT_PATH_PORT, query = "SELECT m FROM HostSpec m WHERE m.ip = :ip AND m.contextPath =:contextPath AND m.port =:port ")}) 
public class HostSpec extends AbstractEntity { 



    @Id 
    @SequenceGenerator(name = "HOST_SPEC_SEQUENCE_GENERATOR", sequenceName = "HOST_SPEC_SEQ", initialValue = 1, allocationSize = 1) 
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "HOST_SPEC_SEQUENCE_GENERATOR") 
    @XmlElement(name = "id") 
    @NotNull 
    @Column(name = "ID", nullable = false) 
    private Long id; 

    @Size(max =200) 
    @Column(name = "APP_NAME",length = 25) 
    @XmlElement(name = "APP_NAME") 
    private String appName; 

    @Size(max =1000) 
    @Column(name = "APP_SERVER_INFO",length = 25) 
    @XmlElement(name = "APP_SERVER_INFO") 
    private String serverInfo; 

    @Size(max =100) 
    @Column(name = "CONTEXT_PATH",length = 25) 
    @XmlElement(name = "CONTEXT_PATH") 
    private String contextPath; 

    @Size(max =255) 
    @Column(name = "BUILD_DATE",length = 25) 
    @XmlElement(name = "BUILD_DATE") 
    private String buildDate; 

    @Size(max =4000) 
    @Column(name = "DESCRIPTION",length = 25) 
    @XmlElement(name = "DESCRIPTION") 
    private String description; 


    @Size(max =50) 
    @Column(name = "IP",length = 25) 
    @XmlElement(name = "IP") 
    private String ip; 

    @Size(max =200) 
    @Column(name = "MODULE_NAME",length = 25) 
    @XmlElement(name = "MODULE_NAME") 
    private String moduleName; 

    @Size(max =100) 
    @Column(name = "NAME",length = 25) 
    @XmlElement(name = "NAME") 
    private String name; 

    @Size(max = 10) 
    @XmlElement(name = "PORT") 
    @Column(name = "PORT") 
    private Long port; 

    @Size(max =20) 
    @Column(name = "PROTOCOL",length = 25) 
    @XmlElement(name = "PROTOCOL") 
    private String protocol; 


    @Size(max = 10) 
    @XmlElement(name = "VERSION_CODE") 
    @Column(name = "VERSION_CODE") 
    private Long versionCode; 

    @Size(max =100) 
    @Column(name = "VERSION_NAME",length = 25) 
    @XmlElement(name = "VERSION_NAME") 
    private String versionName; 

    @Size(max =100) 
    @Column(name = "VIRTUAL_SERVER_NAME",length = 25) 
    @XmlElement(name = "VIRTUAL_SERVER_NAME") 
    private String serverName; 

//getters & setters 

lorsque je tente de l'exécuter, cette exception est Lancers: javax.validation.UnexpectedTypeException: HV000030: Aucun validateur n'a pu être trouvée pour le type: java.lang.Long s'il vous plaît aider

+1

Pouvez-vous essayer d'enlever '@Size (max = 10)' des attributs 'port' et' versionCode'? –

+0

@ArnaudDenoyelle - merci beaucoup. cela a résolu mon problème –

+1

Ok, j'écris la réponse pour les futurs googleurs alors. –

Répondre

2

@Size n'est pas destiné à être utilisé sur le type Long (vous devez utiliser @Max dans ce cas).

Par conséquent, vous devez remplacer @Size(max = 10) avec l'annotation @Max correspondante sur les champs port et versionCode

Selon le javadoc, @Size peut être utilisé sur les types suivants:

  • String (longueur de la chaîne est evaludated)
  • Collection (la taille de la collection est évaluée)
  • Carte (la taille de la carte est évaluée)
  • Tableau (la longueur du tableau est évaluée)
  • Les éléments NULL sont considérés comme valides.