[Seasar-user:12902] Re: [S2JDBC]JdbcManagerのwhereでnullと一致を条件にしたい

Tomato Kagome [E-MAIL ADDRESS DELETED]
2008年 2月 16日 (土) 00:38:50 JST


目からうろこでした。
SimpleWhereのeqは値がnullでSQLを出力せず、
isNullは値がfalseかnullでSQLを出力しないから
「.eq("prop", prop).isNull("prop", prop == null)」
でよかったんですね。
言われてみれば当たり前ですが、この使い方(同じプロパティを2回書くこと)に
全く気がつきませんでした。

小林 (koichik)さん、ありがとうございました。

以上になります。

08/02/15 に Koichi Kobayashi<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 小林 (koichik) です.
>
> Date:    Thu, 14 Feb 2008 23:48:55 +0900
> From:    "Tomato Kagome" <[E-MAIL ADDRESS DELETED]>
> To:      [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:12882] [S2JDBC]JdbcManagerのwhereでnullと一致を条件にしたい
>
> > 現状のJdbcManagerでwhereにnullのプロパティを指定すると、
> > NullPointerExceptionになるようなのですが、回避策はありますでしょうか。
>
> SimpleWhere を使ってはいかがでしょうか.
> SimpleWhere なら,パラメータの値が null の場合は
> 条件に加えられません.
>
> > Hoge hoge = jdbcManager.from(Hoge.class).where("prop = ?", null);
> >
> > 例えば上記の場合にwhereで生成されるSQLが"prop is null"になってくれるとありがたいです。
>
> where(String) で渡される SQL はプロパティ名を
> 除いてそのまま実行するものなので,ちょっと
> 用途が違うかと.
>
> SimpleWhere を使って
>
> .where(new SimpleWhere().eq("prop", prop).isNull("prop", prop == null))
>
> とやれば目的の SQL になるかと.
>
>
>
> --
> <component name="koichik">
>    <property name="fullName">"Koichi Kobayashi"</property>
>    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
>    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
> </component>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


Seasar-user メーリングリストの案内