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