[Seasar-user:2640] 更新SQL自動生成について
sato
sato
2005年 9月 30日 (金) 19:57:07 JST
お世話になっております
NSQ@佐藤です
更新のSQL自動生成において、主キーにCHAR型が含まれている場合に目的の
データが取得でないのですが、それに対する対処法をご存知でしたらご教授下さ
い。
たとえば、
TABLE(HOGE)
-----------------------------
ID char(4) 主キー
NAME varchar2(10)
------------------------------
Bean(HogeBean)
-----------------------------
private String id;
private String name;
public void setId(String s){ id=s;}
public String getId(){ return id;}
public void setName(String s){ name=s; }
public String getName(){ return name;}
-----------------------------
DAO(HogeDao)
-----------------------------
public interface HogeDao {
public int update(HogeBean hoge);
}
-----------------------------
Client
------------------------------------
-前略-
HogeBean bean = new HogeBean();
bean.setId("4");
bean.setName("test");
dao.update(bean);
-後略-
------------------------------------
このようなプログラムがあった場合、dao#updateで自動生成されるSQLは
update HOGE set ID='4', NAME='TEST' where ID='4'
のような感じになります。
この時WHERE句は ID='4 'ではなくID='4'となっている為、一致するデータは
0件となります
そこで、自動生成されるSQLが
update HOGE set ID='4', NAME='TEST' where ID='4 '
のようになるような設定方法はありますでしょうか?
データベースにはOracle8iを利用しています。
とりあえず応急処置としてプログラムでBeanに値をセットする際に指定文字分だ
け後ろに半角スペースを埋めて一致させるようにしていますが、テーブルの桁数
が増減した場合にプログラムを修正する事になってしまうので、できれば裂けた
いと思っています
また、SQLファイルを用意してSETを全部書いてしまうのも一つの手段とは思いま
すが、フィールドが多いので、できればその方法も避けたいと思っています。
=========================================================
株式会社 ネットスクエア
佐藤 慎也 <E-mail:[E-MAIL ADDRESS DELETED]>
〒733-0822
広島市西区庚午中4丁目6−1セントラルビル3F
http://www.net-squares.com/
TEL:(082) 507 - 6266
FAX:(082) 507 - 6267
=======================================================
<< ISO文書管理は弊社のISO-SQUAREにお任せ下さい。 >>
=======================================================
Seasar-user メーリングリストの案内