いくつかの条件に従ってプログラムでフィードされるリストがあります。コードは次のようになります。
List<Criterion> restrictionList = new ArrayList<Criterion>();
for(int i = 1; i<someconditions.length);i++){
if( condition1){
restrictionList.add(...);
} else if(condition2){
restrictionList.add(...)
} else if(condition3){
restrictionList.add(...)
}
}
そして、基準を構築するとき、私はこれを行いました:
for (int c = 0; c < restrictionList.size()-1;c++){
crit.add(Restrictions.or(restrictionList.get(c),restrictionList.get(c+1)));
}
クエリ文字列の where 句は次のようになります。
((A または B) AND (B または C))
構築された句に And があるため、結果の一部が表示されていません
レコードR1、R2、R3があるとしましょう
R1 は条件 A と C を満たします R2 は条件 A を満たします R3 は条件 B と C を満たします
したがって、(A または B) には R1、R2 があり、R3 (B または C) には R1 および R3 があります。
両方の条件が AND でバインドされているため、R2 は最終結果から除外されています。
where句を次のようにするにはどうすればよいですか:
(A または B または C)
そのため、少なくとも 1 つの条件を満たす場合にレコードを表示できます。
ありがとう。