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

B araka.net Takashi ARAKANE takashi
2004年 6月 29日 (火) 20:07:40 JST


荒金と申します。

# 最近になって、Seasarを使い始めたもので、Seasarの開発方針に
# 相容れない内容でありましてもご容赦願います。

S2Dao で、SQLの集約関数を使いたいのですが、Beanを戻り値とする
方法はないのでしょうか?

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