如何解决休眠中的嵌套映射
我有用户、报告和反馈类,我想一次获取所有三个表数据,但我没有得到反馈类数据。这是正确的方法还是有其他方法可以做到?
用户.java
@Entity
@Table(name = "user")
public class User {
@Id
@Column(name = "user_id")
private int id;
//other variables
@OnetoOne(mappedBy = "user",cascade = CascadeType.ALL,fetch = FetchType.EAGER)
private Profile profile;
@OnetoMany(mappedBy = "user",fetch = FetchType.EAGER)
private List<Report> result;
}
报告.java
@Entity
@Table(name = "report")
public class Report {
@Id
private int id;
@JsonIgnore
@ManyToOne(cascade = {CascadeType.DETACH,CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH},fetch = FetchType.LAZY)
@JoinColumn(name = "user_id",insertable = false,updatable = false)
private User user;
@OnetoOne(mappedBy = "report",fetch = FetchType.EAGER)
private Feedback Feedback;
}
反馈.java
@Entity
@Table(name="Feedback")
public class Feedback {
@Id
private int id;
private int user_id;
private int report_id;
@JsonIgnore
@OnetoOne(cascade = {CascadeType.MERGE,CascadeType.DETACH,fetch = FetchType.LAZY)
@JoinColumn(name="report_id")
private Report report;
}
控制器.java
@RequestMapping("/all/report")
public @ResponseBody
List<User> showReport() {
List<User> userList=userDAO.findAll();
return userList;
}
这是清单。
{
"id": 290,"profile": {
//profile data
},"result": [
{
//result data
}
]
解决方法
您应该为此目的使用 JPQL 查询,如下所示:
@Query("select distinct u from User u join fetch u.result r join fetch r.feedback")
List<User> fetchAllUsersWithReportsAndFeedback();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。