问题描述
嗨,我将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 (将#修改为@)