有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案