2
我试图发展与休眠春天REST API。 在谷歌搜索后,我还没有找到解决延迟加载。 我有两个实体,如下图所示:弹簧安置延迟加载和Hibernate
University.java
@Entity()
@Table(schema = "core", name = "university")
public class University extends BaseEntity {
private String uniName;
private String uniTelephon;
@LazyCollection(LazyCollectionOption.FALSE)
@OneToMany(fetch = FetchType.LAZY, mappedBy = "university", cascade = CascadeType.ALL)
@JsonManagedReference
private List<Student> students;
//setter and getter
}
Student.java
@Entity
@Table(schema = "core",name = "student")
public class Student {
@Id
@GeneratedValue
private long id;
private String firstName;
private String lastName;
private String section;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name = "UNIVERSITY_ID",nullable = false)
@JsonBackReference
private University university;
// setter and getter
}
任我休息终点
@GetMapping("/list")
public ResponseEntity list() throws Exception {
// I need to return just Universities But it return it eagerly with their students
return new ResponseEntity(this.universityService.findAll(), HttpStatus.OK);
}
调用REST API后,它与所有学生一起返回大学。
有一种方式来告诉杰克逊不序列化未提取对象或集合?
有人可以帮助我已验证解决方案?
其通过以下异常HTTP状态500 - 无法写入内容:无法懒惰地初始化角色集合:a2.asena.cashModel.University.students,无法初始化代理 - 无会话(通过引用链:java。 util.ArrayList [0] - > a2.asena.cashModel.University [ “学生”]);嵌套的异常是com.fasterxml.jackson.databind.JsonMappingException:未能懒惰地初始化一个角色集合:a2.asena.cashModel.University.students,无法初始化代理 - 没有会话(通过引用链:java.util.ArrayList [ 0] - > a2.asena.cashModel.University [“students”]) – Generic
for above exception solution is overriding Filter in Appinitializer @Override protected Filter [] getServletFilters(){ return new Filter [] {new HiddenHttpMethodFilter(),新MultipartFilter(),新OpenEntityManagerInViewFilter()};是 – Generic
一些文章说这是不正确的解决方案 – Generic