如何解决休眠奇怪的createAlias行为
| 我从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 举报,一经查实,本站将立刻删除。