[Seasar-user:2381] S2Dao: 主キーの無いテーブルで自動生成 SELECT を使えない

suga ko.suga
2005年 7月 17日 (日) 01:48:40 JST


suga です。

SeasarWiki の Q&A に質問として上がっていたことです。

主キーの無いテーブルで SQL を自動生成した場合に
PrimaryKeyNotFoundRuntimeException が発生します。
これ自体は S2Dao 1.0.14 で例外が発生しないように
なりました。
http://seasar.satin.jp/wiki/index.php?SeasarWhatsNew%2F2004-12-14

が、現時点では例外が発生する状態に戻っています。
主キーの無いテーブルでの自動 SELECT 文が有効になるよう
対応をお願いします。


1.0.14 では BeanMetaDataImpl にあったメソッド

protected void setupAutoUpdateSql() {
    if (getPrimaryKeySize() == 0) {
        return;
    }
    :

protected void setupAutoDeleteSql() {
    if (getPrimaryKeySize() == 0) {
        return;
    }
    :

の部分が、内部構造変化のうちに抜け落ちたものだと
思います。現状では AbstractAutoStaticCommand の

protected void setupUpdateSql() {
    checkPrimaryKey();

protected void setupDeleteSql() {
    checkPrimaryKey();

に当たるのでしょうか。

1.0.14 では
・主キーが無ければ更新, 削除 SQL の自動生成をしない
・自動生成の更新, 削除 SQL を実行しようとすると例外
となっているようです。

-- 
suga ( [E-MAIL ADDRESS DELETED] )



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