You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring3.4.4+Java17升级后Mockito测试因HV000030报错求助

问题解决方法

错误原因

jakarta.validation.constraints.NotBlank约束仅支持校验单个String类型,你将其直接用于String[]数组字段getOrderWellDcCapacity.dcs,导致Hibernate Validator无法找到适配数组类型的验证器,触发HV000030错误。

解决方案

根据业务需求选择对应方案:

方案1:要求数组中每个元素都非空且非空白

使用Spring Validation提供的@EachNotBlank注解(Spring Boot 3.x及以上版本支持),专门用于校验数组/集合中的每个String元素:

import org.springframework.validation.annotation.Validated;
import org.springframework.validation.constraints.EachNotBlank;

@Validated // 类级别需添加该注解启用方法参数校验
public class YourController {
    public ResponseEntity<?> getOrderWellDcCapacity(
        @EachNotBlank(message = "每个dc编码不能为空或空白") String[] dcs
    ) {
        // 业务逻辑
    }
}

如果是在请求体DTO中:

import jakarta.validation.constraints.NotEmpty;
import org.springframework.validation.constraints.EachNotBlank;

public class DcRequest {
    @NotEmpty(message = "dcs数组不能为空") // 确保数组本身非空
    @EachNotBlank(message = "每个dc编码不能为空或空白")
    private String[] dcs;

    // getter、setter
}

方案2:仅要求数组本身非空(允许元素为空字符串)

直接使用@NotEmpty注解校验数组:

import jakarta.validation.constraints.NotEmpty;

public class DcRequest {
    @NotEmpty(message = "dcs数组不能为空")
    private String[] dcs;

    // getter、setter
}

额外检查

  • 确保测试用例中传入的dcs参数符合校验规则,比如避免传入null、空数组,或包含空白字符串的数组(如果用了方案1)。
  • 确认spring-boot-starter-validation依赖版本与Spring Boot 3.4.4一致,该starter已包含Jakarta Validation及Hibernate Validator的适配依赖,无需额外引入其他validation相关依赖。

内容的提问来源于stack exchange,提问作者NehaNm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 07:57:08