微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决包含空元素和非空元素的JPQL返回列表

嗨,我将JPA与Hibernate结合使用来处理对数据的访问。

我有一个父表和几个子表,这是我的数据库结构的一个例子 用户(父表) 地址(用户的子表) 汽车(用户的子表)

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

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

Toyota,2014,John,1,Addr 1

Toyota,2015,Charles,2,Addr 3

...

我在数据库中有超过1M条记录,如果我对像Toy之类的汽车制造商进行搜索,它会给我大约1亿条记录,因为返回给调用者是不可行的,我们也可以使用分页来代替100记录。这是给定JPA首先将所有100M记录加载到内存中,然后截断结果的原因,因此对象层次结构方法不起作用的原因之一,在性能方面,响应时间超过40-50秒。

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

Car Maker,Address
null
null
null
Toyota,Addr 3
null
null
Toyota,2004,3,Addr 20
...

我只能看到9个完整对象,而不是100个,EntityManager结果列表中的91个元素都为空。

有什么想法为什么会发生?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。