Spring 忽略Jackson OnDemand中的嵌套属性
我正在开发一个spring引导应用程序,其中Hibernate作为ORM,Jackson作为JSON serialiser 我有三个模型对象和所有三个模型的CRUD操作Spring 忽略Jackson OnDemand中的嵌套属性,spring,spring-boot,jackson,Spring,Spring Boot,Jackson,我正在开发一个spring引导应用程序,其中Hibernate作为ORM,Jackson作为JSON serialiser 我有三个模型对象和所有三个模型的CRUD操作 Class Student{ private Teacher teacher; // Teacher of the student — to be fetched eagerly +Getter/Setter } class Teacher { private List<Subject&g
Class Student{
private Teacher teacher; // Teacher of the student — to be fetched eagerly
+Getter/Setter
}
class Teacher {
private List<Subject> subject; // List of subjects associated to that user— to be fetched eagerly
+Getter/Setter
}
class Subject {
private long subjectId
//Other subject properties
+ Getter/Setter
}
班级学生{
私人教师;//学生的教师-急切地被邀请
+吸气剂/塞特
}
班主任{
private List subject;//与该用户相关联的主题列表-急切获取
+吸气剂/塞特
}
班级科目{
私人长主体
//其他标的财产
+吸气剂/塞特
}
每当我触发获取学生信息的请求时,我都会获取正确的教师信息,同时我也会收到我不需要的科目信息。在同一时间,当我要求教师信息,我需要科目信息应关联到这一点是肯定的。如果我对主题使用@JsonBackReference
,我会一直失去它。我不知道如何做到这一点
提前感谢您的帮助 您可以使用
从spring博客:
public class View {
interface Summary {}
}
public class User {
@JsonView(View.Summary.class)
private Long id;
@JsonView(View.Summary.class)
private String firstname;
@JsonView(View.Summary.class)
private String lastname;
private String email;
private String address;
private String postalCode;
private String city;
private String country;
}
public class Message {
@JsonView(View.Summary.class)
private Long id;
@JsonView(View.Summary.class)
private LocalDate created;
@JsonView(View.Summary.class)
private String title;
@JsonView(View.Summary.class)
private User author;
private List<User> recipients;
private String body;
}
公共类视图{
接口摘要{}
}
公共类用户{
@JsonView(View.Summary.class)
私人长id;
@JsonView(View.Summary.class)
私有字符串名;
@JsonView(View.Summary.class)
私有字符串lastname;
私人字符串电子邮件;
私有字符串地址;
专用字符串后代码;
私人城市;
私人国家;
}
公共类消息{
@JsonView(View.Summary.class)
私人长id;
@JsonView(View.Summary.class)
创建私有LocalDate;
@JsonView(View.Summary.class)
私有字符串标题;
@JsonView(View.Summary.class)
私人用户作者;
私人名单收件人;
私有字符串体;
}
在控制器中
@RestController
public class MessageController {
@Autowired
private MessageService messageService;
@JsonView(View.Summary.class)
@RequestMapping("/")
public List<Message> getAllMessages() {
return messageService.getAll();
}
@RequestMapping("/{id}")
public Message getMessage(@PathVariable Long id) {
return messageService.get(id);
}
}
@RestController
公共类消息控制器{
@自动连线
私人信息服务;
@JsonView(View.Summary.class)
@请求映射(“/”)
公共列表getAllMessages(){
returnmessageservice.getAll();
}
@请求映射(“/{id}”)
公共消息getMessage(@PathVariable Long id){
returnmessageservice.get(id);
}
}
PS:没有指向的链接,因为它当前已关闭。您也可以这样注释
Class Student{
@JsonIgnoreProperties("subject")
private Teacher teacher; // Teacher of the student — to be fetched eagerly
}
您可以编写一个自定义Jackson筛选器,根据序列化的内容有条件地筛选出不需要的字段。很高兴听到我能帮忙。不要忘记将答案标记为已接受,以便其他人知道问题已解决;)这很有帮助。非常感谢。