2011-03-23 101 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