hibernate - 使用 JoinColumns 时,双向 Hibernate 查询产生 1+ N 个查询
问题描述
父实体具有如下注释:
@OneToMany(fetch = FetchType.LAZY, mappedBy = "a")
private Set<Child> b;
子实体有如下注解:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "col_A")
private Parent a;
通过存储库对 Parent 执行 join FETCH 查询时,例如:
@Query("select a " +
"from Parent a " +
"left join FETCH a.b " +
"where a.prop = <some_value> ")
查询按预期工作,执行一个返回 A 及其子项的大连接。但是,如果我们按如下方式更改 Child 的注释,则查询开始执行 1+N:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "COL_A", referencedColumnName = "COL_A"),
@JoinColumn(name = "COL_B", referencedColumnName = "COL_B")
})
private Parent a;
COL_A 是 Parent 的主键,而 COL_B 是用作分区的非键列
解决方案
推荐阅读
- c# - C# FileDialog.Filter 属性是否有任何“与”逻辑?
- java - 如何让这个按钮运行到文本视图中?
- angular - 我是 Angular 的新手,我想将嵌套组件加载到具有一个默认组件的模块中。是否有可能以角度创建这个?
- r - 在 Rstudio Connect `https` vs `http' 上发布时更改包源
- javascript - 如果声明并分配了对象,我如何更改 DOM 中的 textContent
- sql - SQL更新查询以替换其他表中的列值
- c# - Powershell - 自上次运行脚本以来检查文件夹中的新文件
- javascript - 在鼠标悬停时以角度显示具有特定类的标签的工具提示
- javascript - 检查字符串包含在哪个数组中
- c# - Blazor:从列表中增加现有的 @foreach