2012-03-12 14 views
0

私はhibernateで少し新しく、hibernateを使ってストアドプロシージャを呼び出す方法を知らない。 私はストアドプロシージャについて次のような詳細を持っています。休止状態のストアドプロシージャを呼び出すことはできますか?

Env : xxx 
DB : xxx 
Database : xxxxx 

Stored Proc : spCwebCloneSite 
Input : SiteId int (existing site id) 
NewSiteId int (new site id) 

私は既存のサイトIDと新しいサイトIDの両方を持っています。しかし、私はそれがどのようにHibernateを使用してマップするのか分かりません。

+0

私はそれを解決します。クエリのクエリ=のgetSession()。createSQLQuery( "実行spCwebCloneSite?、?") \t \t .addEntity(CwSite.class) \t \t .setInteger(0、orignalSiteId.intValue()) \t \t .setInteger(1、cloneSiteID .intValue()); \t \t return query.executeUpdate()+ ""; –

答えて

0
import java.sql.CallableStatement; 
import java.sql.ResultSet; 
import java.util.Iterator; 
import java.util.List; 

import org.hibernate.Query; 
import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.cfg.Configuration; 



public class StoredProc { 


    public static void main(String[] args) { 

     Session session = null; 

     CallableStatement callableStatement = null; 
     ResultSet resultSet = null; 

     try{ 

      SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); 
      session = sessionFactory.openSession(); 

      System.out.println("selecting records"); 

      callableStatement = session.connection().prepareCall("{call getRecords}"); 
      callableStatement.execute(); 

      resultSet = callableStatement.getResultSet(); 

      while(resultSet.next()){ 
       System.out.println(resultSet.getInt(1)); 
       System.out.println(resultSet.getString(2)); 
      } 



      System.out.print("OK"); 

     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 
     finally{ 
      session.flush(); 
      session.close(); 
     } 
    } 
} 
関連する問題