[Seasar-user:826] Re: S2Dao で集約関数

B isid.co.jp Yasuo Higa higa
2004年 6月 29日 (火) 20:24:17 JST


<uy8m6lj21.wl%[E-MAIL ADDRESS DELETED]> の、
   "[Seasar-user:825] S2Dao で集約関数" において、
   "Takashi ARAKANE <[E-MAIL ADDRESS DELETED]>"さんは書きました:

ひがです。

> 荒金と申します。
> 
> # 最近になって、Seasarを使い始めたもので、Seasarの開発方針に
> # 相容れない内容でありましてもご容赦願います。
> 
> S2Dao で、SQLの集約関数を使いたいのですが、Beanを戻り値とする
> 方法はないのでしょうか?
> 
わざわざ、Beanを作る必要はありません。
マニュアルに出てくるgetCount()のようにします。
今回の例だと
EmployeeDao.java
public int getMax();

EmployeeDao_getMax.sql
SELECT MAX(sal) FROM emp

どうしてもBeanにマッピングしたいなら、
FuncMaxSalDaoを作成して
BEAN = FuncMaxSal.class
public FuncMaxSal getFuncMaxSal();

FuncMaxSalDao_getMax.sql
SELECT MAX(sal) as max_sal FROM emp

のようにするとBeanにマッピングできます。
BeanとDaoは1:1で考えます。

> example において、まず以下のように Beanを作成しました。
> 
> ---------x---------x---------x---------x---------x---------x ここから
> package examples.dao;
> 
> import java.io.Serializable;
> 
> public class FuncMaxSal implements Serializable {
> 
>   public static final String TABLE = "EMP";
>   public static final String maxSal_COLUMN = "max_sal";
>   private int maxSal;
>   
>   public FuncMaxSal() {}
>   public int getMaxSal() { return maxSal; }
>   public void setMaxSal(int i) { maxSal = i; }
> }
> ---------x---------x---------x---------x---------x---------x ここまで
> 
> インターフェース EmployeeDao に、以下を追加しました。
> ---------x---------x---------x---------x---------x---------x ここから
>   public FuncMaxSal getMax();
> ---------x---------x---------x---------x---------x---------x ここまで
> 
> EmployeeDao_getMax.sql は、以下のようになっています。
> ---------x---------x---------x---------x---------x---------x ここから
> SELECT MAX(sal) max_sal FROM emp
> ---------x---------x---------x---------x---------x---------x ここまで
> 
> 最後に、EmployeeDaoClient にて、
>   FuncMaxSal maxSal = dao.getMax();
> として実行したところ、ClassCastException が発生してしまいます。
> 
> java.lang.ClassCastException
>   at examples.dao.EmployeeDao$$EnhancerByCGLIB$$5827325b.getMax(<generated>)
>   at examples.dao.EmployeeDaoClient.main(EmployeeDaoClient.java:36)
> Exception in thread "main"
> 
> 根本的に、何か間違えていますでしょうか?
> 
> --- [E-MAIL ADDRESS DELETED]
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> http://lists.sourceforge.jp/mailman/listinfo/seasar-user
> 



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