我在导出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了吧?