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