[Seasar-user:6397] Re: S2Dao(S2Dao-CodeGen)で主キーを複数持つテーブルの利用について

Seto Azusa [E-MAIL ADDRESS DELETED]
2007年 2月 27日 (火) 23:02:37 JST


せとあずさです。

On 27 Feb 2007 10:29:38 +0900
[E-MAIL ADDRESS DELETED] wrote:

> -->参考まで生成したソースとテーブル定義のExcelを添付します。

拝見したところTESTテーブルの項目が全てPKになっていますが、
S2DaoではPKのみのテーブルを更新するメソッドが存在し、そのメソッドに
対応するSQLファイル・SQLアノテーションが存在すると例外になります。

これは、UPDATE文を自動生成する場合

UPDATE TEST SET (更新後の値) WHERE (プライマリーキーの値)

というようなSQLを生成しようとしますが、テーブルが全てPKの
場合更新後の値とプライマリーキーの値両方をDTOに格納できない
ためです。

ただ、その場合での例外メッセージは
org.seasar.dao.MethodSetupFailureRuntimeException: [EDAO0019]test.dao.TestDao
のupdateメソッドの初期化時に例外が発生しました。理由はorg.seasar.framework.ex
ception.SRuntimeException: [EDAO0020]Primary KeyのみのテーブルをSQL文の自動生成で更新することはできません
	at org.seasar.dao.impl.DaoMetaDataImpl.setupMethod(DaoMetaDataImpl.java:187)
...

となり、いただいた
>WARN  2007-02-26 19:43:02,328 [WebContainer : 2] Unhandled exception
>org.seasar.dao.MethodSetupFailureRuntimeException: [EDAO0019]test.dao.TestDaoのupdateメソッド
>の初期化時に例外が発生しました。理由はorg.seasar.dao.PrimaryKeyNotFoundRuntimeException: [ED
>AO0009]1test.dto.TestDto$$EnhancedByS2AOP$$423a423aにプライマリーキーが見つかりません

とは一致しないのですが、この理由はちょっとわからないです。

S2Daoの仕様としては上記のようになりますので、上記を参考に
してSQL文を記述するかテーブルを見直すかしていただけます
でしょうか。


-- 
せとあずさ
[E-MAIL ADDRESS DELETED]
http://www.fieldnotes.jp/d/




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