java Hibernate奇怪的createAlias bahaviour
我从冬眠中得到了一种非常奇怪的行为
如果我执行以下查询,一切都会按预期进行:
Criteria crit = session.createCriteria( Message.class )
.add( Restrictions.lt( "sequenceReceived", Long.valueOf( 10 ) ) )
.createAlias( "this.commands", "cmd", CriteriaSpecification.LEFT_JOIN);
“按预期工作”意味着我获得消息的结果集,其中包含消息。人们急切地接到命令
但是,以下查询的工作方式不同:
Criteria crit = session.createCriteria( Message.class )
.add( Restrictions.lt( "sequenceReceived", Long.valueOf( 10 ) ) )
.createAlias( "this.commands", "cmd", CriteriaSpecification.LEFT_JOIN, Restrictions.eq( "cmd.priority", 1 ) ));
我添加的唯一更改是对外部左JOIN ON子句的额外限制。现在生成的SQL变成了
选择[…]来自本周的消息 左外连接命令cmd1_ux在此x上。唯一密钥=cmd1。消息键和cmd1。优先级=1 这是我的家。接收到序列号
问题是,现在,结果集仍然包含消息,但不包含消息。命令被懒散地获取
为什么会发生这种情况,有没有办法迫使这种负载急切地发生
注意:我有trie createEntity,它产生了相同的行为
共 (0) 个答案