Hibernate 包含空元素和非空元素的JPQL返回列表

Hibernate 包含空元素和非空元素的JPQL返回列表,hibernate,orm,jpql,nativequery,Hibernate,Orm,Jpql,Nativequery,嗨,我正在使用JPA和Hibernate来处理我对数据的访问 我有一个父表和几个子表,下面是我的DB结构的一个示例 用户(父表) 地址(用户的子表) Cars(用户子表) 最终用户可以在car级别搜索字段,每个请求的过滤器可能不同,但我最多可以搜索7列,但组合可以是最终用户想要的任意数量。例如,按汽车名称搜索(精确或包含);按名称和型号搜索;等等。结果应如下所示: Car Maker, Car Year, User Name, User ID, Address Toyota, 2014,

嗨,我正在使用JPA和Hibernate来处理我对数据的访问

我有一个父表和几个子表,下面是我的DB结构的一个示例 用户(父表) 地址(用户的子表) Cars(用户子表)

最终用户可以在car级别搜索字段,每个请求的过滤器可能不同,但我最多可以搜索7列,但组合可以是最终用户想要的任意数量。例如,按汽车名称搜索(精确或包含);按名称和型号搜索;等等。结果应如下所示:

Car Maker, Car Year, User Name, User ID, Address

Toyota,    2014,     John,      1,       Addr 1

Toyota,    2015,     Charles,   2,       Addr 3

...
我在数据库中有超过100万条记录,如果我搜索像Toy这样的汽车制造商,它会给我大约100万条记录,因为这不可能返回给调用方,我们也有分页来代替100条记录。这是对象层次结构方法不起作用的一个重要原因,因为JPA将首先在内存中加载所有100M记录,然后截断结果,从性能角度看,响应时间超过40-50秒

为了避免这种对象层次结构方法,我创建了一个新实体,将上面的表表示为平面结构,并构建一个本机查询连接表,动态添加搜索条件,并且能够在不到2秒钟的时间内运行,包括分页,但当通过EntityManager执行此操作时,返回列表如下所示

Car Maker, Car Year, User Name, User ID, Address
null
null
null
Toyota,    2014,     John,      1,       Addr 3
null
null
Toyota,    2004,     Charles,   3,       Addr 20
...
我只能看到9个完整对象,而不是其中的100个,EntityManager结果列表中的91个元素为空


知道为什么会发生这种情况吗?

如果您可以添加用于获得这些奇怪结果的代码,那就太好了。