[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 メーリングリストの案内