Java 如何在JPA中验证整数是否为空?
我验证了许多整数,但它是作为一系列if语句编写的,在SonarQube报告中失败。正如您从下面可以看到的,我想检查通道0是否(例如)不为null,以及整数是否不存在于我的存储库中,然后映射到我定义的某个错误消息。我已尝试删除该文件!=下面是空检查,并且已经实现了顶级答案中定义的@NullOrNotBlank注释,并将其分配给我的字段,但我相信这只适用于字符串: 当我在测试消息中包含不是通道的任何其他字段时,我会得到通道字段的NullpointerException错误 如何更新自定义注释以在验证中包含整数?还是我应该使用更合适的注释?或者也许有更好的方法来编写if语句 示例-“通道”:0Java 如何在JPA中验证整数是否为空?,java,jpa,Java,Jpa,我验证了许多整数,但它是作为一系列if语句编写的,在SonarQube报告中失败。正如您从下面可以看到的,我想检查通道0是否(例如)不为null,以及整数是否不存在于我的存储库中,然后映射到我定义的某个错误消息。我已尝试删除该文件!=下面是空检查,并且已经实现了顶级答案中定义的@NullOrNotBlank注释,并将其分配给我的字段,但我相信这只适用于字符串: 当我在测试消息中包含不是通道的任何其他字段时,我会得到通道字段的NullpointerException错误 如何更新自定义注释以在验证
@ConstraintComposition(CompositionType.OR)
@空的
@不空白
@报告违规行为
@目标({ElementType.FIELD})
@保留(RetentionPolicy.RUNTIME)
@约束(validatedBy={})
public@interface NullOrNotBlank{
String message()默认值“{org.hibernate.validator.constraints.NullOrNotBlank.message}”;
类[]组()默认值{};
类您可以创建一个使用存储库(或任何其他bean)的自定义验证器
或者(如果使用第三方依赖关系是可以接受的),我建议Jakub Jirutka的,它允许以下内容:
公共类示例{
@SpELAssert(“@myService.calculate(#this)>42”)
私有int值;
}
if (updateCaseDataVO.getChannel() != null
&& !(channelRepository.findById(updateCaseDataVO.getChannel().getChannel()).isPresent())) {
map.put(ErrorConstants.CHANNEL, ErrorConstants.CHANNEL_ERROR_MESSAGE);
}
@ConstraintComposition(CompositionType.OR)
@Null
@NotBlank
@ReportAsSingleViolation
@Target({ ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {})
public @interface NullOrNotBlank {
String message() default "{org.hibernate.validator.constraints.NullOrNotBlank.message}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}