假设有一个类A,它有两个属性property1和property2,则HQL语句"from A as a left outer join a.property1"有一个原则--HQL语句忽略配置文件的预先抓取策略,这句话有两个意思:
1.不管A类对property1在配置文件里是什么策略(可能是预先抓取,立即或延迟检索,它们都失效),这时都采用HQL指定的左外连接;左外连接必定会初始化property1属性(或对象),但是如果配置文件里对property1的检索策略是延迟加载,A类得 到对properyt1的引用,为了得到这个引用,需要再次发送一条SQL语句来确立这种引用关系,这种情况在property1为集合时经常出现.
2.A类在配置文件中设置的对property2的预先抓取策略将被忽略(不管这个策略是fetch或是select),对property2有影响的设置是立即和延迟加载,hibernate只看得到这两种策略,所以在使用语句"from A as a left outer join a.property1"时,property2的加载策略将仅由lazy="true"或者是lazy="false"来决定