问题描述
|
我从Hibernate收到一个非常奇怪的行为。
如果执行以下查询,则一切正常。
Criteria crit = session.createCriteria( Message.class )
.add( Restrictions.lt( \"sequenceReceived\",Long.valueOf( 10 ) ) )
.createalias( \"this.commands\",\"cmd\",CriteriaSpecification.LEFT_JOIN);
\“按预期工作\”表示我获得Message的resultSet,在其中急切地获取了Message.commands。
但是,以下查询不能以相同的方式工作:
Criteria crit = session.createCriteria( Message.class )
.add( Restrictions.lt( \"sequenceReceived\",CriteriaSpecification.LEFT_JOIN,Restrictions.eq( \"cmd.priority\",1 ) ));
我添加的唯一更改是对OUTER LEFT JOIN ON子句的额外限制。现在生成的sql变成
从消息this_中选择[...]
LEFT OUTER JOIN命令cmd1_ on this_.unique_key = cmd1_.message_key AND cmd1_.priority = 1
在此this..sequence_received
问题在于,现在结果集仍然包含Message,但是message.commands却被延迟获取。
为什么会发生这种情况,有没有办法强迫这种装载迫切发生呢?
注意:我有一个createEntity,产生了相同的行为。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)