我已经设置了多个父-子实体。
public class Brigade {
// Ids
@OneToMany(mappedBy = "brigade", orphanRemoval = true, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JsonManagedReference
private List<Battalion> battalionList;
// other columns
}
public class Battalion {
// Ids
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "BRIGADE_ID")
@JsonBackReference
private Brigade brigade;
@OneToMany(mappedBy = "battalion", orphanRemoval = true, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JsonManagedReference
private List<Company> companyList;
// other columns
}
public class Company {
// Ids
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "BATTALION_ID")
@JsonBackReference
private Battalion battalion;
// other columns
}在前端,我有一个页面显示一个营表,供用户选择查看详细信息。这个页面依赖于一个RESTful API,存储库和服务类都是这样设置的。
public interface BattalionRepository extends JpaRepository<Battalion, Long> { }
public class BattalionService {
@Autowired
private BattalionRepository battRepository;
public List<Battalion> getAllBattalions() {
return List<Battalion> battRepository.findAll();
}
// other stuff
}我的问题是,JPARepository的.findAll()方法不仅将返回营条目的列表,还将返回营所链接的父旅实体,以及每个营包含的所有相关的子连。它膨胀了JSON数据(我不需要表中的所有细节),并且在调试时令人难以置信地难以阅读,更不用说将所有数据转储到客户机上的安全性问题了。
如何让JPARepository返回--只返回目标实体的?
发布于 2019-07-26 03:58:29
通过使用预测,您可以通过声明自己的接口、表示选择性属性和编写自己的查询方法来获取选择性属性。当然,有多种编写接口的方法。看看文档中共享的示例。
https://stackoverflow.com/questions/57212414
复制相似问题