Sql HQL获取连接而不知道对象实现

Sql HQL获取连接而不知道对象实现,sql,hibernate,orm,mapping,hql,Sql,Hibernate,Orm,Mapping,Hql,我遇到了性能问题,我正在尝试添加一些fetch连接,以便仅在一个请求中获取一些数据 我的问题是: 我得到了一个映射对象AbstractObject。 我还得到了其他映射对象,如ObjectA,ObjectB等。。。所有这些都在扩展AbstractObject 在我的ObjectA中,我得到了foos的列表。 在我的ObjectB中,我得到了一个otherFoos的列表 我想做的是: 我想写一个这样的请求: entityManager.createQuery(“从抽象对象ao左连接获取ao.foo

我遇到了性能问题,我正在尝试添加一些fetch连接,以便仅在一个请求中获取一些数据

我的问题是: 我得到了一个映射对象
AbstractObject
。 我还得到了其他映射对象,如
ObjectA
ObjectB
等。。。所有这些都在扩展
AbstractObject

在我的
ObjectA
中,我得到了
foos
的列表。 在我的
ObjectB
中,我得到了一个
otherFoos
的列表

我想做的是: 我想写一个这样的请求:

entityManager.createQuery(“从抽象对象ao左连接获取ao.foos左连接获取ao.otherFoos中选择ao,其中ao.id=?1”,AbstractObject.class)

问题:我得到了一个
nullPointerException
,因为我认为hibernate不知道
foos
otherFoos
AbstractObject
。 在我看来,我不知道我会有一个
ObjectA
还是
ObjectB

有人知道这个问题的解决方案吗


Hibernate版本:5.0.12.Final通常,为了执行HQL查询并在同一结果上返回多个实体的属性,您需要对DTO进行投影

因此,您将创建一个DTO,例如ObjectAB,它将不会被映射,它可能会扩展对象a和B,然后您将创建查询并将结果转换器设置为此DTO


或者,您可以使用元组而不是DTO,但这不会改变主要思想。有关此方法的更多详细信息,请阅读。

其他信息:我不希望使用easter解决方案总是获得foos和其他foos。谢谢Christos!这正是我一直在寻找的解决方案。