2011-03-23 100 views
6

我是hibernate的初學者,直到今天我還沒有遇到過存儲過程。休眠和存儲過程

有人能告訴我如何執行在休眠以下, 這個存儲過程返回三個領域

date, balance, name_of_person 

執行程序「DFD 'FDF' '34'

  1. 無論我需要以這種方式創建bean,以使bean具有以下字段: date,balance,name_of_person

  2. 是否需要創建屬性文件?

  3. 是否有可能使用Criteria在hibernate中執行程序?

  4. 如果我的NativeQuery是唯一的選擇,那麼我怎麼可以創建在該屬性文件,因爲我沒有這樣的表從程序

  5. 結果是否可以使用本機查詢單獨使用,而不使用任何Bean或屬性文件,並打印結果

+0

閱讀文檔 - http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/querysql.html#sp_query的[調用在Hibernate中存儲過程 – skaffman 2011-03-23 13:21:34

+2

可能重複](http://stackoverflow.com/questions/3681045/calling-a-stored-procedure-in-hibernate) – 2011-03-23 13:24:15

回答

7

這裏有一個簡單的例子: -

Hibernate映射文件

<hibernate-mapping> 
    <sql-query name="mySp"> 
     <return-scalar column="date" type="date" /> 
     <return-scalar column="balance" type="long" /> 
     <return-scalar column="name_of_person" type="string" /> 

     { call get_balance_sp :name } 
    </sql-query> 
</hibernate-mapping> 

代碼

List<MyBean> list = sessionFactory.getCurrentSession() 
          .getNamedQuery("mySp") 
          .setParameter("name", name) 
          .setResultTransformer(Transformers.aliasToBean(MyBean.class)) 
          .list(); 

Bean類

這個bean持有的存儲過程的結果。字段名稱必須與Hibernate映射文件中的列名匹配。

public class MyBean { 
    private Date date; 
    private Long balance; 
    private String name_of_person; 

    // getters and setters 
} 
+0

非常感謝!簡單而不可撼動! – Vitalii 2014-08-12 20:05:53