在导出excel时Hibernate产生的SQL的效率问题

我在导出2000条记录的excel时,Hibernate产生了2001条SQL....郁闷。

我要导出系统中所有的User,该User关联了机构表UserOrg.我要导出的字段有:User.name 和 UserOrg.name。

于是Hibernate先用一条Sql取出2000个User,然后产生了2000条语句去取UserOrg。。。。User与Userorg是多对一的关系。

感觉这样是不是效率方面很有问题...请问大家有什么好方法吗?

那就设成 true,然后用 left join fetch 去 查,你会看到 Hibernate帮你生成的SQL 是 一条 left join on 的,然后 你的UserOrg里面 有值

left join

select User from User u left join u.UserOrg uo where u.uoid = uo.uoid

上面写错了

select User from User u left join fetch u.UserOrg uo where u.UserOrg.uoid = uo.uoid

你不会把 lazy 设成 false了吧?