我想知道为什么在使用JPA和Hibernate时,当在ManyToOne或OneToMany关系中执行急切的加载时,它会调用DB以获取实体信息,另外,还会生成后续查询来获取每个子节点。ClassroomID")在另一边有一个名为“教室”的班级,如下所示:public class Classroom {
@OneToMany,对每个studentsList中包含的每个Classroom对象执行一个查询以
我对hibernate有这个问题。情况是我在重新设计我的项目。我的上一个项目是使用JMS,它与我的POJO一起顺利运行。我在延迟加载字段方面遇到了问题,因为使用JMS的项目在延迟加载的情况下运行平稳,但是现在我试图检索数据库中的一些值,但是总是有一个hibernate例外,说明我想延迟加载的failed to lazilyprivate String lastname;
// this field causes the lazy loading excepti
just ignore the field but no luck :/}
问题是,每当我尝试使用childRepository.findAll()从数据库中获取子列表时,hibernate使N+1选择查询,为什么?我认为这可能是对此的解释:当Hibernate填充子对象时,他尝试为父字段创建一个代理,为此,他需要父行的id,这通常应该是子表中的外键,但在我的示例中,#fk不是绑定到Parent表的主键,而是绑定到一个唯一的