一直以为,在Hiberenate中用多对一关系表达外键,并设置为延迟加载时,Hibernate不会在查主表时去查引用表。今天的测试却发现不是这么回事。
我定义了一个Topic类,其中有一个外键引用Company类:
< many-to-one  name ="company"  class ="Company"  lazy ="no-proxy" >
Hibernate的多对一关系是如何延迟加载的? _职场
< column  name ="COMPANY"  length ="32"   />
Hibernate的多对一关系是如何延迟加载的? _职场
</ many-to-one >
测试HQL如下:select id, company from Topic
而我期望的SQL应当是这样:select boid, company from DT_TOPIC.
结果Hiberate Tools 生成的SQL是这样:
select
Hibernate的多对一关系是如何延迟加载的? _职场topic0_.BOID 
as  col_0_0_,
Hibernate的多对一关系是如何延迟加载的? _职场topic0_.COMPANY 
as  col_1_0_,
Hibernate的多对一关系是如何延迟加载的? _职场company1_.COMPID 
as  COMPID409_,
Hibernate的多对一关系是如何延迟加载的? _职场company1_.COMPNAME 
as  COMPNAME409_,
Hibernate的多对一关系是如何延迟加载的? _职场company1_.DESCRIPTION 
as  DESCRIPT3_409_,
Hibernate的多对一关系是如何延迟加载的? _职场company1_.STATUS 
as  STATUS409_ 
Hibernate的多对一关系是如何延迟加载的? _职场
from
Hibernate的多对一关系是如何延迟加载的? _职场DT_TOPIC topic0_ 
Hibernate的多对一关系是如何延迟加载的? _职场
inner   join
Hibernate的多对一关系是如何延迟加载的? _职场XPC_COMPANY company1_ 
Hibernate的多对一关系是如何延迟加载的? _职场
on  topic0_.COMPANY = company1_.COMPID
Hibernate生成的SQL多做了两件影响性能的事情:
1, 与XPC_COMPANY进行inner join。
2,把XPC_COMPANY中的所有字段全取出来了。
这样还叫什么延迟加载啊?
 
哪位高手能告诉我这是为什么?