[Seasar-user:16008] Re: [S2JDBC]タイプセーフ化に伴う要望
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2008年 10月 16日 (木) 16:23:36 JST
片岡です。
対応、確認しました。今までとおりのソースで動きそうです。
超早い対応、ありがとうございます。
ちょっとタイプセーフ対応S2JDBCに関して、別件でご相談があります。
Number型(BigInteger、Long)のプロパティに対してOperationsを使用すると、
ActionFormがStringで受けた場合等、Long.parseLong()を呼び出さなければならず、
空文字の場合にNumberFormatExceptionが出る。excludesWhitespace()との組み
合わせで利用している場合、結構困るという問題があります。
利用シーンは、検索用アプリケーションです。
具体的には、Entity上Long型のプロパティーにWhere句を設定したいケースが
あるのですが、現状は、excludesWhitespace()との組み合わせで、ユーザの入力
がなければ(=値が空文字であれば)、検索条件に含めないといったシーンで
利用しています。
下記のようなソースです。
jdbcManager.from(Project.class)
.leftOuterJoin(project().dept())
.where(
eq(project().projectId(), Long.parseLong(listForm.projectId)).excludesWhitespace(),
like(project().projectNm(), listForm.projectNm).excludesWhitespace()
eq(project().deptId(), Long.parseLong(listForm.deptId)).excludesWhitespace()
).getResultList();
この例の場合、アクションフォームのlistForm.projectIdが空文字だとNumberFormatException
がでてしまい、これまでのソースよりも処理をかませなければならず結構面倒です。
たとえば、Operationsに、空文字だとnullを返すなどしてexcludesWhitespaceを効くようにした上で、Long.parseLongをするような「toLong()」メソッドのようなものを作っていただけると、処理的に楽に
かけるのでよいかなーと思っております。
Long以外の型でもExceptionが発生するケースもあるのかもしれませんが、とりあえず、現状
困ったレベルでのご相談です。
ご検討お願いします。
>-----Original Message-----
>From: [E-MAIL ADDRESS DELETED]
>[mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of Koichi
>Kobayashi
>Sent: Thursday, October 16, 2008 3:30 AM
>To: [E-MAIL ADDRESS DELETED]
>Subject: [Seasar-user:15999] Re: [S2JDBC]タイプセーフ化に伴う要望
>
>
>小林 (koichik) です.
>
>Date: Thu, 16 Oct 2008 02:18:44 +0900
>From: "片岡歩" <[E-MAIL ADDRESS DELETED]>
>To: [E-MAIL ADDRESS DELETED]
>Subject: [Seasar-user:15998] [S2JDBC]タイプセーフ化に伴う要望
>
>> ここで要望なのですが、AbstractWhereなどでも、JOINなどで対応したようの
>形で、パラメータの型を
>> CharSequence型に変更し、内部的にtoString()していただければ、これまでの
>ソースでもリコンパイル
>> さえすればうまく動くのではないかと思っています。
>>
>> できれば、変更に関してご検討いただきたいです。
>>
>> また、加えての要望ですが、現状、AutoInsertやAutoUpdateなどのincludes、
>excludesなどの
>> パラメータはStringのままになっています。ここに関しても、CharSequence型
>に変更いただると、
>> S2JDBC-GENのタイプセーフ名称補完が使えてよいと思いますが、いかがでしょ
>うか。
>
>対応しました.
>AutoSelect の forUpdate() 系も併せて対応しました.
>
>SNAPSHOT をデプロイしたのでご確認ください.
>
>http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2
>-framework/2.4.31-SNAPSHOT/s2-framework-2.4.31-20081015.180831-2.jar
>http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2
>-extension/2.4.31-SNAPSHOT/s2-extension-2.4.31-20081015.180831-2.jar
>http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2
>-tiger/2.4.31-SNAPSHOT/s2-tiger-2.4.31-20081015.181139-2.jar
>
>
>--
><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 メーリングリストの案内