とりあえず書置き

SeasarS2JDBCで、気になったところメモ。
修正していただいたので、削除。 

 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が来てしまっても、気にせず動かすことができると思うだけどね。
いちいち、頭なのかをチェックするめんどくさいですしね。