Coleção Hibernate Child Limited ao usar associação à esquerda nos critérios

Ao usar critérios de hibernação, apenas alterar o tipo de associação afeta os resultados das coleções filho da classe de domínio raiz.

Por exemplo, ter a classe Parent tem um relacionamento um-para-muitos com a classe Child com os seguintes dados:

Parent 
| id | Name     |
|  1 | Parent 1 |

Child
| id | parent_id | Name   |
|  1 |         1 | Child1 |
|  2 |         1 | Child2 |

O uso dos seguintes critérios de hibernação retorna a 1 linha pai e o acesso à coleção filha resulta nas duas linhas retornadas:

session.createCriteria(Parent.class)
    .createCriteria('child', CriteriaSpecification.INNER_JOIN)
    .add( Restrictions.eq( 'name', 'Child1' ) )
    .list()

No entanto, ao alterar o código acima com uma junção esquerda, a 1 linha pai é retornada, mas somente a linha filho correspondente é retornada ao acessar a coleção filho.

session.createCriteria(Parent.class)
    .createCriteria('child', CriteriaSpecification.LEFT_JOIN)
    .add( Restrictions.eq( 'name', 'Child1' ) )
    .list()

Por que esse efeito colateral ocorre? Eu encontrei algumas discussões sobre como usar ou evitar esse efeito colateral, dependendo do resultado pretendido, mas nada sobre o motivo de ele estar lá em primeiro lugar e se foi intencional. A pergunta direta mais próxima é um antigo defeito obsoleto (http://opensource.atlassian.com/projects/hibernate/browse/HHH-3872)

EDIT 3/24: Dados fixos *

questionAnswers(2)

yourAnswerToTheQuestion