JavaでExpressionを使ってSQLを生成するときの注意点です。
NGパターン
Expression exp = null; List<Expression> exp1 = new ArrayList<Expression>(); List<Expression> exp2 = new ArrayList<Expression>(); //exp1,exp2には適宜要素を入れる for (int k = 0; k < exp1.size(); k++) { for (int l = 0; l < exp2.size(); l++) { exp = exp.orExp(exp1.get(k).andExp(exp2.get(l))); } }
expはnullなので1発めにヌルポが発生します。
OKパターン
Expression exp = null; List<Expression> exp1 = new ArrayList<Expression>(); List<Expression> exp2 = new ArrayList<Expression>(); //exp1,exp2には適宜要素を入れる for (int k = 0; k < exp1.size(); k++) { for (int l = 0; l < exp2.size(); l++) { if (k == 0 && l == 0) { exp = exp1.get(k).andExp(exp2.get(l)); } else { exp = exp.orExp(exp1.get(k).andExp(exp2.get(l))); } } }