【问题标题】:Spring Rest jackson with lombok return field with default valueSpring Rest jackson,带有默认值的 lombok 返回字段
【发布时间】:2018-10-02 07:55:51
【问题描述】:

我正在开发基于 spring boot 的 rest web 服务,我正在使用 lombok 生成 getter 和 setter,但是当我调用我的 web 服务时,我的对象的字段默认值为 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":{}}

如果我将 getter 和 setter 添加到我的类中,它可以正常工作,并且我会得到带有值的 json 响应 在此先感谢您的帮助

【问题讨论】:

    标签: java rest spring-boot spring-data lombok


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      更多信息见here

      【讨论】:

        【解决方案3】:

        已解决问题是我使用HikariCp默认连接池,没有在属性文件中添加所需的配置。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-03-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多