Tou com uma bronca meia sério aqui com HQL. Vou tentar ser o mais simples.
Tenho o seguinte relacionamento:
Declaracao 1 - N Movimentos
Movimentos N - 1 Tipo de Movimento
“Tipo de Movimento” é só pra dizer se eh 1- Entrada ou 2 - Saída, ok?
O que eu quero: Todas as declaracoes com movimentações SOMENTE de ENTRADA, ou seja, com discriminador igual a 1.
A consulta parece simples:
SELECT d FROM declaracoes d
JOIN d.listaDeMovimentos m
where m.tipoMovimento.discriminador = 1
O que ocorre na verdade nessa consulta?
Nesta consulta tou tentando fazer exatamente oq quero, mas nao tou conseguindo. Imaginem que uma DECLARAÇÃO tem 2 MOVIMENTAÇÕES, 1 sendo de ENTRADA e outra sendo de SAÍDA.
Pela minha consulta… eu espero sempre que, quando eu recuperar do banco essa declaração, ela venha somente com a MOVIMENTACAO de entrada, pois foi oq pedi pelo discriminador no “where”. Mas oq acontece de fato, eh q a declaração vem sempre COMPLETA, ou seja, com as 2 movimentações amarradas à ela. O mesmo acontece se eu colocar o valor “2” no where… a declaração não vem somente com a movimentação de SAÍDA.
Conclusão: Por essa consulta, não consigo ter declarações com sua lista de movimentações somente de ENTRADA ou SAIDA. E não consigo criar outra HQL pra isso q quero.
Ja me sugeriram fazer com NATIVE mesmo. Ou com HQL mesmo… só q descrevendo campo a campo. Mas quero insistir achando que existe um jeito de fazer essa consultar de forma mais compacta, simples.
Fato: Minha consulta HQL está errada e nao sei criar a que me satisfaz… hehehe
Bom… nao sei se consegui ser claro galera. Mas o desespero ja eh grande… por isso tou partindo pra explicar algo meio complexo de redigir. Mas enfim…
Se alguem entender e souber … agradeço bastante!
Abraços!