【发布时间】:2017-09-13 06:16:20
【问题描述】:
我正在尝试使用 hibernate 开发 spring rest api。 在谷歌搜索后,我没有找到延迟加载的解决方案。 我有两个如下实体:
大学.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
}
学生.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后,返回大学和所有学生。
有没有办法告诉杰克逊不要序列化未获取的对象或集合?
有人可以帮助我提供经过验证的解决方案吗?
【问题讨论】:
-
虽然接受的答案是正确的,但更好的答案是不要将您的实体返回给客户。首先将它们转换为数据传输对象(DTO)并将这些 DTO 对象发送回客户端。
标签: json hibernate lazy-loading one-to-many spring-rest