gpt4 book ai didi

java - 如何在 JPA 中验证 Integer 为 null 或非空白?

转载 作者:行者123 更新时间:2023-12-01 22:00:13 25 4
gpt4 key购买 nike

我有许多要验证的整数,但它被编写为一系列 if 语句,这些语句在 SonarQube 报告中失败。正如您从下面看到的,我想检查(例如) channel 0 是否不为空,以及整数是否不存在于我的存储库中,然后映射到我定义的某些错误消息。我尝试删除下面的 != null 检查,并实现了评分最高的答案中定义的 @NullOrNotBlank 注释,并将其分配给我的字段,但这仅适用于我相信的字符串: Java annotation for Null but neither Empty nor Blank

当我在测试消息中包含非 channel 的任何其他字段时,我会收到 channel 字段的 NullpointerException 错误。

如何更新自定义注释以在验证中包含整数?或者我应该使用更合适的注释?或者也许有更好的方法来编写 if 语句?

示例 - “ channel ”:0,

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 {};
}

最佳答案

您可以创建一个使用存储库(或任何其他 bean)的自定义 validator 。这是一个简单的demo我已经设为 answer类似的问题。

或者(如果可以接受使用第三方依赖项)我会推荐 Jakub Jirutka Bean Validator utilizing Spring Expression Language (SpEL)它允许这样的事情:

public class Sample {

@SpELAssert("@myService.calculate(#this) > 42")
private int value;
}

关于java - 如何在 JPA 中验证 Integer 为 null 或非空白?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58711093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com