有2个实体:
@Entity
@Table(name = "page")
public class Page {
@Id
int id;
}
和
@Entity
@Table(name = "page_details")
public class PageDetails {
@Id
private int id;
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "id", referencedColumnName = "id")
@Fetch(FetchMode.JOIN)
private Page page;
}
通过 JpaRepository.findAll 请求所有 PageDetails 时,我希望收到 1 个表单请求:
select * from page inner join page_details on page.id = page_details.id;
但是我收到了 1 个请求:
select * from page;
和 N 个请求:
select * from page_details where id = ?;
这怎么能解决?休眠版本 5.0.9
Hibernate 有时会忽略 EAGER 初始化并无论如何使用 LAZY。就个人而言,我通过 JQL 和 FETCH JOIN 来处理这个问题。
那些。在您的情况下,您需要在视图存储库中创建一个新方法:
在某些情况下,也可能值得使用“LEFT OUTER”,但这取决于您的情况,您可以在此处阅读更多相关信息(请参阅列表下方的部分 - INNER JOIN 等)