Spring Rest jackson with lombok return 带默认值的字段

Spring Rest jackson with lombok return field with default value

我正在开发基于 spring 引导的休息网络服务,我正在使用 lombok 生成 getter 和 setter 但是当我调用我的网络服务时,我得到我的字段默认值为 null 的对象这是我的代码:

我的实体:

@Data
@Entity
@JsonAutoDetect(fieldVisibility = Visibility.ANY)
public class Projet implements Serializable {
    /**
     *  Serial UID
     */
    private static final long serialVersionUID = -7268509549664338191L;
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long codeProjet ;
    private String description;
    private String responsable ;
    private Double budget ;
    private Date dateDebut;
    private Date dateFin ;
    @OneToMany(mappedBy="codeQuestonnaire")
    @JsonIgnore
    private List<Questionnaire> questionnaires ;

}

这是我的休息服务:

@RestController
public class ProjectResource {

    @Autowired
    private ProjetRepository projetRepository ;

    @GetMapping("/projet/{id}")
    public ResponseEntity<Projet> getProjet(@PathVariable("id") long id){
        Projet projet = projetRepository.getOne(id);
        if(projet!=null) {
            return new ResponseEntity<Projet>(projet,HttpStatus.OK);
        }else {
            return new ResponseEntity<Projet>(HttpStatus.NOT_FOUND);
        }

    }
}

在我的配置文件中,我添加了这一行:

spring.jackson.serialization.fail-on-empty-beans=false

当我调用我的服务时,我得到了这样的回复:

{"codeProjet":null,"description":null,"responsable":null,"budget":null,"dateDebut":null,"dateFin":null,"handler":{},"hibernateLazyInitializer":{}}

如果我将 getters 和 setters 添加到我的 class 它会正常工作并且我得到 json 响应值 在此先感谢您的帮助

我认为您遇到了与此处相同的问题 No serializer found for class org.hibernate.proxy.pojo.javassist.Javassist?

不要配置 spring.jackson.serialization.fail-on-empty-beans=false,而是用 @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) 注释您的实体。

只需将 getOne 方法替换为 findById(或 findOne 用于 Spring Boot 1.5+)。

方法 getOne return 对实体(其代理)的引用,而不是实体。

更多信息请参阅

解决问题是我使用HikariCp作为默认连接池,没有在properties文件中添加需要的配置。