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

Lombok @Data Bean出现Hibernate验证重复ConstraintViolations问题求助

解决Lombok注解重复导致Hibernate Validator重复报错问题

问题分析

当前代码中,字段上的验证注解(@NotBlank、@Pattern)通过lombok.config被复制到生成的getter上,导致字段和getter同时存在相同的验证注解,触发Hibernate Validator重复验证;而swagger-gradle-plugin仅扫描getter注解生成OpenAPI文档,需要保证目标注解在getter上。

解决方案

直接将所有需要的注解(验证注解+@Schema)通过Lombok的@Getter注解的onMethod_参数绑定到生成的getter上,字段上不再保留任何业务注解,同时移除lombok.config中的注解复制配置。

调整后的Foo类代码

@Data
public class Foo {

    @Getter(onMethod_ = {
        @NotBlank,
        @Schema(description = "Organization label"),
        @Pattern(regexp = "^[-a-zA-Z0-9]+(\\.[-a-zA-Z0-9]+)?$", message = "Label must be alphanumeric with dashes.")
    })
    private String label;
}

注:若使用Lombok 1.18.16及以上版本,可替换为onMethod = @__({...})(需确保项目启用了相关注解处理配置),onMethod_是兼容旧版本的写法。

清理lombok.config配置

删除之前添加的注解复制规则,避免不必要的注解复制:

# 移除以下配置项
# lombok.copyableAnnotations += javax.validation.constraints.NotBlank
# lombok.copyableAnnotations += javax.validation.constraints.Pattern
# lombok.copyableAnnotations += javax.validation.constraints.NotEmpty
# lombok.copyableAnnotations += javax.validation.constraints.NotNull

效果说明

  • swagger-gradle-plugin可扫描到getter上的@Schema和验证注解,正常生成OpenAPI文档。
  • Hibernate Validator仅检测getter上的验证注解,不会因字段和getter重复注解触发两次错误报告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 02:35:07