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