找不到类型为java.lang.Short的验证器
我有一个JAXB生成的类,包含以下内容:找不到类型为java.lang.Short的验证器,java,hibernate,jaxb,hibernate-validator,Java,Hibernate,Jaxb,Hibernate Validator,我有一个JAXB生成的类,包含以下内容: @Pattern(regexp = "[0-9]", message = "Message details here") protected Short msgVal; 当我通过Hibernate运行JUnit测试来验证该类的实例时,我得到: javax.validation.UnexpectedTypeException:找不到类型为java.lang.Short的验证器 如果我注释掉@Pattern约束,JUnitSet运行良好 是否可以对短值设置
@Pattern(regexp = "[0-9]", message = "Message details here")
protected Short msgVal;
当我通过Hibernate运行JUnit测试来验证该类的实例时,我得到:
javax.validation.UnexpectedTypeException:找不到类型为java.lang.Short的验证器
如果我注释掉@Pattern
约束,JUnitSet运行良好
是否可以对短值设置@Pattern
约束?如果是,我错过了什么
问候,,
PM.@模式用于字符串,不能应用于短字符。相反,您可以使用@Max和/或@Min.@数字,甚至更好
@Digits(integer=1, fraction=0)
protected Short msgVal;
无
@Pattern
注释仅将参数作为字符串。您可以使用@数字(message=“message here”,整数=32767,分数=0)
谢谢您的快速回复。我自己也以为是这样。然而,JAXB生成的类“java.lang.Short”字段的@Pattern注释是从以下XSD自动生成的:
注释是由一个Xjc JSR303注释插件(即krasa JAXB工具)放置的,我想知道问题是在模式文件中还是在Xjc插件的代码本身中?再次感谢,PM。这是插件工具中的一个错误。你可能想在这里提出一个问题:你试过了吗?对不起,你试过了吗我不允许更改模式(它是外部的,由其他组织使用)。在线查看xs:unsignedByte
时,我认为xs:pattern
在xs:restriction
上允许使用basexs:unsignedByte
。我将在krasa jaxb工具问题列表中记录一个问题,希望看到他们在那里说了什么。然而,将xs:pattern
限制映射到@pattern
之外的注释似乎很奇怪。这正常吗?通常由JSR303注释插件完成?感谢您的快速回复。请看我对@Robertiano回答的评论。干杯,下午。