[英]Why hibernate @ManyToOne generating multiple select query for same table?
为什么 Hibernate 为同一个表/实体生成多个 select 语句? 以下是@ManyToOne 映射:
class Student{
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "student_id", insertable = false, updatable = false, referencedColumnName = "student_id")
Subject subject;
}
生成的 HQL:3 次 select 查询正在为主题表生成
Hibernate:
select
subject0_.subject_cd as subject_cd1_12_0_,
subject0_.subjectname as subject_name_12_0_
from
smart.vw_subject subject0_
where
fundhierar0_.subject_cd =?
Hibernate:
select
subject0_.subject_cd as subject_cd1_12_0_,
subject0_.subjectname as subject_name_12_0_
from
smart.vw_subject subject0_
where
fundhierar0_.subject_cd =?
Hibernate:
select
subject0_.subject_cd as subject_cd1_12_0_,
subject0_.subjectname as subject_name_12_0_
from
smart.vw_subject subject0_
where
fundhierar0_.subject_cd =?
Hibernate 提供了多种检索数据的策略。 很少有Select
, join
, batch
。
但是,这似乎是 N+1 问题。 第一个查询从数据库中检索 N 条记录。 对于每个父母,一个新的查询检索孩子。 因此,对于 N Parent,N 个查询从子表中检索信息。
获取策略取决于我们的应用程序是如何工作的,所以就让你去做吧。 您可以在此处找到更多详细信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.