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文件中添加需要的配置。
我正在开发基于 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文件中添加需要的配置。