[Seasar-user:6971] Re: [S2Dao] DaoとDaoManagerの関係について
SETO Azusa
[E-MAIL ADDRESS DELETED]
2007年 3月 30日 (金) 00:29:33 JST
せとあずさです。
On 29 Mar 2007 11:21:40 +0900
[E-MAIL ADDRESS DELETED] wrote:
> > (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()を使って実装しています。
これなんですが、
(2)のインターフェースは(1)を継承して、
public interface (2)Dao extends (1)Daoとして、
(3)を
public abstract class (3)Dao implements (2)Dao
としたほうがスマートなことに送ったあとで気づきました。
> (1)と(2)のinterfaceで同じメソッド名(find)があるとダメって事でしょうか?
> それともどこかに間違いがありますでしょうか?
はい、S2DaoはDaoのメソッドのオーバーロードをサポートしていないので、
呼び出し時に例外になります。(生成時にfind()を作っているのを失念して
いました...)お手数ですが、EntityManager経由で検索を行う方のメソッド
名を変更してください。よろしくお願いします。
--
せとあずさ
[E-MAIL ADDRESS DELETED]
http://www.fieldnotes.jp/d/
Seasar-user メーリングリストの案内