とりあえず書置き
SeasarのS2JDBCで、気になったところメモ。
修正していただいたので、削除。
ComplexWhere w = new ComplexWhere(); w.and(new ComplexWhere().eq("c", 3).or().eq("d", 4));
この書き方はしてはいけないらしい。頭にandがくるWhere句は間違いだからだそうだ。
でも、ComplexWhereTest.javaにあるテストの
ComplexWhere w = new ComplexWhere(); w.eq("a", 1).eq("b", 2).or().eq("c", 3).eq("d", 4).or();
は、OK。最後のorがくるWhere句は間違いじゃないのかな?
上でgetCriteria()をすると,
c = ? or d = ?)
となって、余計な")"がついてて中途半端文字列に
下でgetCriteria()をすると
(a = ? and b = ?) or (c = ? and d = ?)
と、後ろの"or"はつけずに生成されますね。
できれば、上のgetCriteria()の処理結果が
(c = ? or d = ?)
になってくれれば、頭にandが来ても、正常な文作ってくれて、プログラマに優しいのになぁ〜。
そうすれば、動的にComplexWhereを組み立ててるときに、頭にandが来てしまっても、気にせず動かすことができると思うだけどね。
いちいち、頭なのかをチェックするめんどくさいですしね。