首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Builder类没有构建方法(名称:' build ') - Jackson

Builder类没有构建方法(名称:' build ') - Jackson
EN

Stack Overflow用户
提问于 2021-06-30 14:04:35
回答 2查看 1.4K关注 0票数 3

当调用objectMapper.convertValue(cityEntity, City.class))时会发生此错误。

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

代码语言:javascript
复制
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的服务似乎是引发异常的地方。

代码语言:javascript
复制
    public List<City> getCities(){
        return cityRepo.findAll().stream().map(cityEntity -> objectMapper
                .convertValue(cityEntity, City.class))
                .collect(Collectors.toList());
    }
EN

回答 2

Stack Overflow用户

发布于 2022-05-24 03:47:10

问题是Jackson不能反序列化对象值。

我的解决方案是向我的类添加以下注释:

代码语言:javascript
复制
// constructor with no args
@NoArgsConstructor(force = true, access = AccessLevel.PRIVATE)
// constructor with all args
@AllArgsConstructor
// ignore unknown properties during deserialization
@JsonIgnoreProperties(ignoreUnknown = true)

我的课最后看起来是这样的:

代码语言:javascript
复制
@Getter
@Builder
@NoArgsConstructor(force = true, access = AccessLevel.PRIVATE)
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class MyClass {
    private boolean flag;
    private boolean flag2;
    private MyClassA objectA;
    private MyClassB objectB;
}

如果您想阅读更多关于为什么我们应该同时使用@NoArgsConstructor@AllArgsConstructor的文章,here is a good answer

票数 2
EN

Stack Overflow用户

发布于 2021-07-08 17:30:59

您确定始终将名称和描述传递给类生成器吗?

我得到了同样的错误,在我的例子中,我试图使用生成的Builder来创建一个对象,但是我没有传递所有的参数,所以生成的方法不是spring想要的。它在搜索N+1参数方法,但我只传递了N个参数。在这种情况下,它将查找另一个无法找到的方法签名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68196324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档