[Seasar-user:6953] Re: [S2Dao] DaoとDaoManagerの関係について

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2007年 3月 29日 (木) 11:21:40 JST


せとあずさ様

お世話になりすぎて困っております。中西です。
返信どうもありがとうございます。

文字化けの件、大変失礼しました。
本当に化け化けですね。以後気をつけます。

それから掲題の件について。
「abstractな」クラスを次の(1),(2),(3)の通り作成し、
diconファイルに「abstractな」クラスを次の通り登録してみました。

> (1)S2Dao-CodeGenでクラスを生成します。
   -->以下が宣言されています。
   public List getAll[テーブル名]();
   public String find_ARGS = "dto";
   public List find([テーブル名]FindDto dto);
   public [テーブル名]Dto soleMatch([テーブル名]FindDto dto);
   public void insert([テーブル名]Dto dto);
   public void update([テーブル名]Dto dto);
   public void delete([テーブル名]Dto dto);

> (2)EntityManger経由で検索を行うメソッドのinterfaceを作成します。
   -->以下の宣言がされています。
     あと、コンストラクタも実装しています。super(daoMetaDataFactory);
   public List find(String query, Object[] values);
   public Object findObject(String query, Object[] values);
   public MultiPkDto findEntity(String query, Object[] values);

> (3)(1)(2)を実装し、AbstractDaoを継承する「abstraceな」クラスを作成します。
   -->(2)の3メソッドだけgetEntityManager()を使って実装しています。

 <component name="[abstractな]クラス名" 
            class="[abstractな]クラスのFQCN名" 
            instance="prototype" >
     <arg>dao.daoMetaDataFactoryImpl</arg>
     <aspect>dao.daoInterceptor</aspect>
     <aspect>aop.traceInterceptor</aspect>
 </component>

すると、
(1)に定義してある更新系メソッドと、
(2)に定義(実装)してあるList find(String query, Object[] values) は呼び出せましたが、
(1)に定義してあるList find(MultiPkFindDto dto);を呼び出すと、

org.seasar.framework.beans.MethodNotFoundRuntimeException: 
[ESSR0049]test.dao.manager.[abstractなクラス名]に
適用可能なメソッド(find())が見つかりません

とエラーになってしまいます。

(1)と(2)のinterfaceで同じメソッド名(find)があるとダメって事でしょうか?
それともどこかに間違いがありますでしょうか?


お忙しい中、いつも初歩的な質問で申し訳ありませんが
以上、宜しくお願い致します。


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