呼叫objectMapper.convertValue(cityEntity, City.class))
时会发生这个错误。
com.fasterxml.Jackson.数据绑定.exc.无效定义异常:生成器类com.example.PostgresApp.dto.City$Builder
没有生成方法(名称:“构建”)
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());
}
2条答案
按热度按时间gdx19jrr1#
是否确实始终将名称和说明传递给类生成器?
我得到了同样的错误,在我的例子中,我试图使用生成的构建器来创建一个对象,但我没有传递所有的参数,所以生成的方法不是spring正在寻找的方法。它正在搜索N+1个参数的方法,但我只传递了N个参数。在这种情况下,它将寻找一个不同的方法签名,无法找到。
iqxoj9l92#
问题是Jackson无法反序列化对象值。
我的解决方案是在我的类中添加以下注解:
我的类最后看起来像这样:
如果你想了解更多关于为什么我们应该一起使用
@NoArgsConstructor
和@AllArgsConstructor
的信息,here is a good answer。