Pergunta

pequenas perguntas sobre Restrictions.or e Restrictions.and

Se eu fizer algo como isto:

...
criterion = criterionA;
criterion = Restrictions.and(criterion, criterionB);
criterion = Restrictions.or(criterion, criterionC);
criterion = Restrictions.and(criterion, criterionD);

Será que isto vai ser tratado como:

(A and B) or (C and D) (following mathematical conventions)

Ou será que vai ser tratado na ordem em que foram adicionadas as restrições:

(((A and B) or C) and D)

Por favor, adicionar referências se houver algum ...

Foi útil?

Solução

Ele deve ser tratado como o último

(((A and B) or C) and D)

Você poderia fazer

criterion = Restriction.or(Restrictions.and(criterionA, criterionB), Restrictions.and(criterionC, criterionD))

Se você quer a primeira solução

Outras dicas

não há regras de precedência (como em uma linguagem de programação ou em um analisador CFG), chamadas de método pedir inequivocamente determina a expressão.

(A e B) ou (C e D) tem de ser traduzido para:

import static org.hibernate.criterion.Restrictions.*;
...
criterion = or(and(A, B), and(C,D));
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top