[Seasar-user:12660] Re: [SAStruts + S2JDBC]

出羽 健一 [E-MAIL ADDRESS DELETED]
2008年 1月 28日 (月) 18:58:07 JST


ひが様

出羽です。

> これを防ぐためには、S2BeanUtilsの呼び出しで、
> excludesWhitespace()を指定してください。
> 
> T1_.NAME like '%'についても、これで対応できるはずです。

バッチリ対応できました。
有難うございます。

> -----Original Message-----
> ひがです。
> 
> > 出羽です、お疲れ様です。
> >
> > SAStruts + S2JDBCで以下のような日付範囲検索
> > プログラムを実装してみました。
> >
> >
> > /** 検索条件: 従業員名の前方一致 */
> > public String condition_name_STARTS;
> >
> > /** 検索条件:入社日の範囲検索(開始) */
> > @DateType
> > public String condition_hireDate_GE;
> >
> > /** 検索条件:入社日の範囲検索(終了) */
> > @DateType
> > public String condition_hireDate_LE;
> >
> > @Execute(validator = false)
> > public String list() {
> >     empItems = jdbcManager.from(Emp.class)
> >         .leftOuterJoin("dept")
> >         .where(Beans.createAndCopy(BeanMap.class, this)
> 
> >             .prefix("condition_")
> >             .dateConverter("yyyyMMdd", "hireDate")
> >             .execute())
> >         .orderBy("hireDate")
> >         .getResultList();
> >     return "list.jsp";
> > }
> >
> >
> > 以下は、condition_name_STARTS プロパティ、及び、
> > condition_hireDate_LEプロパティに空文字が
> > セットされた場合に 生成されるSQLです。
> >
> >
> > select
> > 	T1_.ID, T1_.NAME, T1_.HIRE_DATE,
> > 	T1_.DEPT_ID, T1_.VERSION_NO,
> > 	T2_.ID, T2_.NAME, T2_.VERSION_NO
> > from
> > 	EMP T1_ left outer join DEPT T2_ on T1_.DEPT_ID = T2_.ID
> > where
> > 	T1_.HIRE_DATE >= '1982-01-01'
> > 	and T1_.NAME like '%'
> > 	and T1_.HIRE_DATE <= null
> > order by
> > 	T1_.HIRE_DATE
> >
> > 『and T1_.HIRE_DATE <= null』の条件は
> > 生成しなくても良いと思ったのですがいかがでしょうか?
> > (検索結果が0件になってしまいます。)
> >
> BeanMapにコピーされた段階では空文字なので、
> whereに渡されたときには、nullではないと判断され、
> 条件に足されます。
> 
> その後、Conversion系の修正により、空文字は、nullに
> 変換されるようになったので、T1_.HIRE_DATE <= ""
> がT1_.HIRE_DATE <= nullに変換されて実行されます。
> 
> これを防ぐためには、S2BeanUtilsの呼び出しで、
> excludesWhitespace()を指定してください。
> 
> T1_.NAME like '%'についても、これで対応できるはずです。
> 
> よろしくお願いします。
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user


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