java - 如何使用 EntityGraph 获取多个列表
问题描述
我花了太多时间尝试做一些乍一看似乎很简单的事情:
假设我有一个具有两个关系的Store
实体:@OneToMany
@Entity
public class Store {
private String name;
@OneToMany(mappedBy = "store")
private List<Foo> foos;
@OneToMany(mappedBy = "store")
private List<Bar> bars;
}
我想用相同的查询获取两个列表。我想使用实体图,因为我需要在执行时间决定我想要获取哪些孩子。
@EntityGraph(attributePaths = {"foos", "bars"})
Store findByName(String name);
这引起:
MultipleBagFetchException: cannot simultaneously fetch multiple bags.
我不想使用Set
instead of List
,因为这种方法的目的是避免 N+1 查询问题和笛卡尔积问题(实体层次结构比示例大得多),所以 nolazy fetching
或更改List
为Set
do 帮助这个案例。
此外,此处提出的第一个答案不适用于实体图。
有任何想法吗?
解决方案
推荐阅读
- php - 为什么 ASC 的 WP 查询订单不起作用?
- javascript - 下载多层画布图像js的最佳方法
- d3.js - 为什么 d3.select() 在 vuetify+nuxt 环境中不起作用?
- javascript - 画布顺序中的多图像通过角度拖放列表进行管理
- python - 在 Pandas DataFrame 中选择日期来计算夏令时
- python - 根据s3中的日期名称删除文件夹
- powershell - 通过个性化的家庭驱动器创建新用户
- linux - 以下清空文件的方法有什么区别?
- reactjs - 如何使用 nock 通过多次调用返回不同的值
- python - 在 Python 中使用 for 循环计算元组列表的平均值