[Seasar-user:3483] id_CULUMN 利用時のSQL自動生成エラー

Minoru KINOSHITA [E-MAIL ADDRESS DELETED]
2006年 4月 11日 (火) 07:40:38 JST


はじめまして、木ノ下と申します。

今回初めてSeasar2とS2DAOを利用させていただいております。
まだ、試験的なため完全に利用しているわけではありませんが、
S2DAOのSQL自動生成に驚かされ、開発スピードや効率の向上に非常に期待してお
ります。

さて、今回 S2DAOのSQL部分において以下の問題が出ましたので、
報告とアドバイスをいただきたいと思い投稿いたしました。

概要
 id_CULUMN利用時にSQLのupdate/deleteがDAOにあるとinsert文が失敗する

環境
   開発クライアント(windows eclipse3.1)
    - JDK 1.5.0.06
    - S2DAO 1.0.31
    - Seasar 2 2.3.7
    - Tomcat 5.5.9
  DBサーバLinux(ubuntu-jp)
    - PostgreSQL 8.0.3

現象
create table UserInfo
(
 number serial PRIMARY KEY,
 Name varchar(100),
 Division varchar(100)
 (一部省略)
)
で作成したテーブルに
------
public static final String NO_PERSISTENT_PROPS = "id";
public static final String id_CULUMN = "number";

private int id;
private String Name;
private String Divison
.....(省略)
-------

としてプログラムを実行したところ
Exception in thread "main"
org.seasar.dao.PrimaryKeyNotFoundRuntimeException:
[EDAO0009]jp.co.nec.fc.sun.DataClass.UserInfoにプライマリーキーが見つか
りません
	at
org.seasar.dao.impl.AbstractAutoStaticCommand.checkPrimaryKey(AbstractAutoStaticCommand.java:152)
	at
org.seasar.dao.impl.AbstractAutoStaticCommand.setupDeleteSql(AbstractAutoStaticCommand.java:141)
	at
org.seasar.dao.impl.DeleteAutoStaticCommand.setupSql(DeleteAutoStaticCommand.java:43)
といったエラーがでました。

S2DAOのドキュメントやMLを参考にいろいろ探してみたところ[Seasar-user:2381]の
現象に似ていたの、この場合のアドバイスのことを試してみたところ
Daoのupdate/deleteが入っていると、上記のエラーを吐くことがわかりました。

これに対する対処方法はS2DAOのプログラム修正しかありませんでしょうか?

テーブル列のnumber->idに変更することで対処することは可能ですが
これではあまり意味がないのでなんとかアドバイスをいただけたらと考えており
ます。

また、私の理解が誤っているためかもしれませんが
IDの自動生成においては"id_ID"といった決まったプロパティしか利用できません
この認識は正しいでしょうか?
ドキュメントを見る限りでは"id"は任意の値であるように思えますが
つまり"number_ID"と設定するとエラーをはきます(エラーログがなくて申し訳な
いです)

以上、長文になりましたがよろしければアドバイスお願いいたします。





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