CREATE OR REPLACE PROCEDURE LIMING_ZZJHQR (m_gzh String,
  RESULTSET OUT TEST_ZZJHQR.testresultset
)
AS
begin
open RESULTSET for
select * from rwfpb where gzh=m_gzh;
end;
此为存储过程,一个参数m_gzh,返回一个数据集@SuppressWarnings("unchecked")
public List<Map> findCreateSqlMap(final String sql,final Object[] parameter) {
    List<Map> list = getHibernateTemplate().executeFind(new HibernateCallback(){
        public Object doInHibernate(Session session) throws HibernateException, SQLException {
            SQLQuery query = session.createSQLQuery("getlist");
            for(int i=0;i<parameter.length;i++){
                query.setParameter(i,parameter[i]);
            }
            query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
            return (List<Map>)query.list();
        }});
    return list;
}
这个为底层DAO中的方法,我觉得这个好用点
或者我用的这个
public List getList() {
Session session =getSessionFactory().openSession();   
Query query = session.getNamedQuery("getlist");
  //query.setParameter(1,"232");
  query.setString(0, "232");
return (List)query.list();}dao层得方法
<sql-query name = "getlist" callable="true">
  <return alias="Rwfpb" class = "com.king.krs.dao.impl.Rwfpb" />
  {call LIMING_ZZJHQR(?,?)}
</sql-query>
hbm.xml中的配置信息,我不想用JDBC那种调用存储过程的方式ACTION中直接直接调用第二中方法
List resultList = null;
 resultList = service.getList();
或者调用第一种方式
List resultList = null;
String hsql = "{call LIMING_ZZJHQR(?,?)}";
String m_gzh = request.getParameter("gzh");
Object[] ds = new Object[] {m_gzh};
resultList =service.findCreateSqlMap(hsql, ds);
都执行不过去,报错 大家谁能帮我修改下 能让我执行过去的 哪种方式都可以就不想用JDBC的那种
大周末得还要加班,哎!伤不起啊

解决方案 »

  1.   

    存储过程加上SSH还没那么做过 
    支持楼主
      

  2.   

    CREATE OR REPLACE PROCEDURE LIMING_ZZJHQR (RESULTSET OUT TEST_ZZJHQR.testresultset
    ,m_gzh String
    )
    AS
    begin
    open RESULTSET for
    select * from rwfpb where gzh=m_gzh;
    end;
    存储过程sql-query name = "getlist" callable="true">
      <return alias="Rwfpb" class = "com.king.krs.dao.impl.Rwfpb" />
      {call LIMING_ZZJHQR(?,:m_gzh)}
    </sql-query>
    配置信息public List getList() {
    Session session =getSessionFactory().openSession();   
    Query query = session.getNamedQuery("getlist");
      //query.setParameter(1,"232");
      query.setString("m_gzh", "232");
    return (List)query.list();
    }
    测试过,应该好用,大家参考下,红色的是修改过的地方,不过
    @SuppressWarnings("unchecked")
    public List<Map> findCreateSqlMap(final String sql,final Object[] parameter) {
      List<Map> list = getHibernateTemplate().executeFind(new HibernateCallback(){
      public Object doInHibernate(Session session) throws HibernateException, SQLException {
      SQLQuery query = session.createSQLQuery("getlist");
      for(int i=0;i<parameter.length;i++){
      query.setParameter(i,parameter[i]);
      }
      query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
      return (List<Map>)query.list();
      }});
      return list;
    }
    这种还不知道怎么改
      

  3.   

    query.setString("m_gzh", "232");这块应该是query.setParameter();
      

  4.   

    谁知道
    @SuppressWarnings("unchecked")
    public List<Map> findCreateSqlMap(final String sql,final Object[] parameter) {
      List<Map> list = getHibernateTemplate().executeFind(new HibernateCallback(){
      public Object doInHibernate(Session session) throws HibernateException, SQLException {
      SQLQuery query = session.createSQLQuery("getlist");
      for(int i=0;i<parameter.length;i++){
      query.setParameter(i,parameter[i]);
      }
      query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
      return (List<Map>)query.list();
      }});
      return list;
    }
    这种方式该如何调用啊
      

  5.   

    这种查询一个表的还可以 不过调用复杂查询的话就不行了 返回的数据集根本就不是Rwfpb
    <return alias="Rwfpb" class = "com.king.krs.dao.impl.Rwfpb" />
    有没有明白人解决下啊