2009-06-26 3 views
4

작은 질문에 나는 같은 것을 할 경우 :최대 절전 제한 및/또는 주문 Restrictions.or 및 Restrictions.and</p> <p>에 대한

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

:

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

이은으로 처리됩니다 또는 제한이 추가 된 순서대로 처리됩니다.

(((A and B) or C) and D) 
어떤이있는 경우

또한 최초의 솔루션을 원하는 경우에

이 그것은 후자

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

로 처리해야

+0

당신은 정말 일을 믹싱 :

(A와 B) 또는 (C와 D는)로 변환해야합니다. 변수 선언에서 final을 사용해보십시오. – whiskeysierra

답변

5

당신은

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

을 할 수 ... 참조를 추가하십시오

2

프로그래밍 언어 나 CFG 구문 분석기와 같은 우선 순위 규칙이 없으므로 메서드 호출 순서가 명확하게 결정됩니다. 표현이야. 당신은 모든 라인에서 "기준"을 다시 할당 할 때

import static org.hibernate.criterion.Restrictions.*; 
... 
criterion = or(and(A, B), and(C,D));