S2DaoのGenerics系の対応が...
ちょっとアレ?たとえば、
public interface BaseDao<T> { void create(T obj); T findById(long id); } public interface HogeDao extends BaseDao<Hoge> { } public class HogeDaoImpl implements HogeDao { public void create(Hoge obj); @Arguments("id") public Hoge findById(long id); }
でHogeDaoImplにdaoInterceptorを仕掛けて使うと、
org.seasar.framework.beans.MethodNotFoundRuntimeException: [ESSR0049]example.hoge.HogeDaoImplに適用可能なメソッド(create())が見つかりません at org.seasar.dao.impl.DaoMetaDataImpl.getSqlCommand(DaoMetaDataImpl.java:695) at org.seasar.dao.interceptors.S2DaoInterceptor.invoke(S2DaoInterceptor.java:52) at example.hoge.HogeDaoImpl$$EnhancedByS2AOP$$8b058b$$MethodInvocation$$create3.proceed(MethodInvocationClassGenerator.java) at example.hoge.HogeDaoImpl$$EnhancedByS2AOP$$8b058b.create(HogeDaoImpl$$EnhancedByS2AOP$$8b058b.java) at example.hoge.HogeDaoImpl.create(HogeDaoImpl.java:1) at example.hoge.HogeDaoTest.testCreateTx(HogeDaoTest.java:24) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 〜(省略)〜
とか、
org.seasar.framework.beans.MethodNotFoundRuntimeException: [ESSR0049]example.hoge.HogeDaoImplに適用可能なメソッド(findById())が見つかりません at org.seasar.dao.impl.DaoMetaDataImpl.getSqlCommand(DaoMetaDataImpl.java:695) at org.seasar.dao.interceptors.S2DaoInterceptor.invoke(S2DaoInterceptor.java:52) at example.hoge.HogeDaoImpl$$EnhancedByS2AOP$$caf083$$MethodInvocation$$findById0.proceed(MethodInvocationClassGenerator.java) at example.hoge.HogeDaoImpl$$EnhancedByS2AOP$$caf083.findById(HogeDaoImpl$$EnhancedByS2AOP$$caf083.java) at example.hoge.HogeDaoImpl.findById(HogeDaoImpl.java:1) at example.hoge.HogeDaoTest.testFindByIdTx(HogeDaoTest.java:30) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 〜(省略)〜
とかエラーになるようです。
HogeDaoImplをわざわざ用意しているのは、実装メソッドを混在させたいという意図によるものです。
どうも今の状況でGenericsを多用しつつS2ファミリーを使うというのはリスクが高いようですね。人柱としてはいいんですが、元々S2buriを利用しようとちょっとしたオレ様フレームワークを作ってみようかと思ってスタートした作業が遅々として進みません・・・。
とりあえずは割り切ってGenericsをあきらめるかなぁ・・・。