Junção implícita de HQL na cláusula where gera cross join em vez de inner join
Estou usando o Hibernate 3.6 e o MSSQL 2012.
Ao executar este HQL
select tbl.state from Property tbl where tbl.state = 1 and tbl.entity.state = 1 and
tbl.entity.className = 'com....' and tbl.fieldName = 'fieldName'
Estou recebendo esse SQL
select property0_.State as col_0_0_ from Properties property0_ cross join Entities
entity1_ where property0_.refEntityid=entity1_.id and property0_.State=1 and
entity1_.State=1 and entity1_.ClassName='com....' and property0_.FieldName='fieldName'
* Observe ojunção cruzada e acondição adicionada na cláusula where.
De acordo com o Hibernate docshttps://docs.jboss.org/hibernate/core/3.5/reference/en/html/queryhql.html#queryhql-joins-forms
junção implícita deve gerar parajunção interna.
Eu notei que há um bug abertohttps://hibernate.atlassian.net/browse/HHH-7707 isso pode estar se referindo a esse problema, mas ninguém respondeu e já está aberto há um ano.
Eu apreciaria qualquer informação sobre este assunto. Obrigado.
PS. Estou bem ciente de que o uso de junções implícitas não é o jeito certo de escrever o HQL, mas não posso fazer nada sobre isso agora.