2017-07-25 42 views
1

我有一个对象类,除了Id以外没有必需的字段。这里是代码:找不到类型验证器:java.lang.Long:没有验证器可以找到的类型: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 

,当我尝试运行它,这个例外是抛出: javax.validation.UnexpectedTypeException:HV000030:没有验证可以为类型中找到:java.lang.Long中 请帮助

+1

您可以尝试从属性'port'和'versionCode'中删除'@Size(max = 10)'? –

+0

@ArnaudDenoyelle - 非常感谢。这解决了我的问题 –

+1

好吧,我为未来的谷歌搜索答案然后。 –

回答

2

@Size不适用于Long型(在这种情况下,您应该使用@Max)。

因此,则应该与相应的@Max注释的字段portversionCode

取代@Size(max = 10)据的Javadoc,@Size可以在以下类型一起使用:

  • 字符串(字符串长度evaludated)
  • 藏品(收藏尺寸被评估)
  • 地图(地图尺寸被评估)
  • 阵列(评估阵列长度)
  • 空元素被视为有效。
相关问题