首页 > 解决方案 > Builder 类没有构建方法(名称:'build') - Jackson

问题描述

调用时会出现此错误objectMapper.convertValue(cityEntity, City.class))

com.fasterxml.jackson.databind.exc.InvalidDefinitionException:生成器类com.example.PostgresApp.dto.City$Builder没有构建方法(名称:'build')

package com.example.PostgresApp.dto;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
import lombok.*;
import org.apache.commons.lang3.StringUtils;


@Value
@Builder(builderClassName = "Builder")
@JsonDeserialize(builder = City.Builder.class)
public class City {

    String name;

    String description;

    @JsonPOJOBuilder(withPrefix = StringUtils.EMPTY)
    public static class Builder {

    }
}

服务调用 repo 似乎是引发异常的地方

    public List<City> getCities(){
        return cityRepo.findAll().stream().map(cityEntity -> objectMapper
                .convertValue(cityEntity, City.class))
                .collect(Collectors.toList());
    }

标签: springspring-bootjacksonbuilder

解决方案


您确定您总是将名称和描述传递给类 Builder 吗?

我遇到了同样的错误,在我的情况下,我试图使用生成的 Builder 来创建一个对象,但我没有传递所有参数,因此生成的方法不是 spring 正在寻找的方法。它正在搜索 N+1 个参数方法,但我只传递了 N 个参数。在这种情况下,它将寻找无法找到的不同方法签名。


推荐阅读