[Seasar-user:2653] Re: 更新SQL自動生成について

上原 慶三 keizou
2005年 10月 4日 (火) 05:15:21 JST


上原です。

Yasuo Higa wrote:
> <[E-MAIL ADDRESS DELETED]> の、
>    "[Seasar-user:2646] Re: 更新SQL自動生成について" において、
>    "suga <[E-MAIL ADDRESS DELETED]>"さんは書きました:
> 
> ひがです。
> 
> 
>>suga です。
>>
>>05/10/03 に 上原 慶三<[E-MAIL ADDRESS DELETED]> さんは書きました:
>>
>>>で、これの解決方法ですが、
>>>1.あらたにTYPESアノテーションを導入して、Beanにカラムの型を指定できるよ
>>>うにし
> 
> 
> COLUMN_TYPEアノテーションが良いような気がします。

自分から言っておいてなんなんですが、すがさんのおっしゃるとおり、
S2JDBCをいじらないと、COLUMN_TYPEアノテーションは難しいですね。
なので、COLUMN_TYPEアノテーションはしばらくできそうにありません。

>>もし UPDATE 文の QUERY アノテーションが有効になれば、
>>    (WHERE) id = RPAD(/*bean.id*/'dummy', 4, ' ')
>>のような指定でうまくいきます。
>>
> 
> これは、インデックスが効かなくなるので、
> あまりお勧めではありません。
> ファンクションインデックスを別途張れば大丈夫かもしれないけど。

 idを関数の引数にするならインデックスが効かなくなるのもわかるんですが、
定数を関数の引数にした場合もインデックスが効かなくなるんでしょうか。
そのぐらい最適化してくれてもいいような。

#でも、テーブルの桁数が増減した場合にプログラムを修正する事に
#なってしまうのは変わらないけど、いいんでしょうか。

とりあえず、更新系でQUERYアノテーションを利用したい場合は、
他にもありそうだから、次のバージョンでサポートします。


>とりあえず応急処置としてプログラムでBeanに値をセットする際に
>指定文字分だけ後ろに半角スペースを埋めて一致させるようにしています

Beanに値をセットする際じゃなくてsetterの中で
半角スペースで埋めるようにすれば変更箇所が1個所ですむから、
QUERYアノテーションと大して違わないような気がしますが、
それじゃだめですか?
-- 
---
上原 慶三<[E-MAIL ADDRESS DELETED]>



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