Hibernate-如何在一个SQL查询中对象和加载外键对象?

Hibernate-如何在一个SQL查询中对象和加载外键对象?,hibernate,Hibernate,我想用外键对象(一对一关系)从数据库加载对象 我想要达到的是像这样使用我的对象 parent.getChildrenFk().getName(); 我知道我可以用两种方法做到这一点 1. Lazy load ... SQLQuery sqlQuery = session.createSqlQuery("SELECT * FROM parent").addEntity(Parent.class); List<Parent> list = sqlQuery.list(); for(P

我想用外键对象(一对一关系)从数据库加载对象 我想要达到的是像这样使用我的对象

parent.getChildrenFk().getName();
我知道我可以用两种方法做到这一点

1. Lazy load

...
SQLQuery sqlQuery = session.createSqlQuery("SELECT * FROM parent").addEntity(Parent.class);
List<Parent> list = sqlQuery.list();
for(Parent p : list){
String name = p.getChildFk().getName();
}
return list;
...

此解决方案的缺点是,我无法以这种方式访问对象parent.getChildrenFk().getName()有没有办法在一次查询中加载带有子对象的父对象,以便像我写的那样访问子对象?

查询数据库的最佳方法是使用HQL。当HQL不能满足您的需要时,SQL作为备份策略非常有用

您肯定应该阅读,因为您似乎完全忽略了它的存在,而HQL是Hibernate(和JPA)的关键部分

要在单个HQL查询中获取父项及其子项,假设它们是父项与子项之间的关联,并且字段名为
child
,只需

select p from Parent p left join fetch p.child
select p from Parent p left join fetch p.child