可以热切地加入电话和人物实体 避免可能的额外往返以初始化多对一 关联。
示例475. JPA本机查询选择已加入的实体 多对一协会
List<Phone> phones = entityManager.createNativeQuery(
"SELECT * " +
"FROM Phone ph " +
"JOIN Person pr ON ph.person_id = pr.id", Phone.class )
.getResultList();
for(Phone phone : phones) {
Person person = phone.getPerson();
}
我正在运行一个与此类似的示例。我的查询就像上面一样简单。但是,当我执行phone.getPerson()
时,会向数据库发送另一个查询以检索Person
。我没有重复的别名错误,也没有找到列错误。通过自己运行Hibernate生成的查询,我可以检查是否存在填充两个实体所需的所有列。
还尝试了查询的Hibernate替代方案。它没有用。除.addEntity()
和.addJoin()
之外,不推荐使用(尽管仍在手动示例中)。