2011-03-23 23 views
6

Soy un principiante en hibernación y hasta esta fecha no he encontrado procedimientos almacenados.hibernar y procedimiento almacenado

Puede alguien decirme cómo ejecutar el siguiente en Hibernate, este procedimiento almacenado devuelve tres campos

date, balance, name_of_person 

ejecutar los procedimientos de los DFD ' 'FDF' '34'

  1. Si me necesita crear el bean de tal manera que el bean tenga los siguientes campos: fecha, saldo, nombre_de_personaje

  2. Si necesito crear el archivo de propiedad?

  3. ¿Es posible usar Criteria para ejecutar procedimientos en hibernación?

  4. Si el NativeQuery es la única opción, entonces, ¿cómo puedo crear el archivo de propiedades, ya que no tienen la una tabla como el resultado del procedimiento

  5. ¿Es posible utilizar consulta nativa solo, sin, usando cualquier archivo de frijol o de propiedad, y la impresión de los resultados

+0

Lea la documentación - http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/querysql.html#sp_query – skaffman

+2

posible duplicado de [Llamar a un procedimiento almacenado en Hibernate ] (http://stackoverflow.com/questions/3681045/calling-a-stored-procedure-in-hibernate) –

Respuesta

7

Aquí está un ejemplo sencillo: -

archivo de mapeo de 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> 

Código

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

clase de bean

Este bean contiene los resultados del procedimiento almacenado. Los nombres de los campos deben coincidir con los nombres de las columnas del archivo de mapeo de Hibernate.

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

    // getters and setters 
} 
+0

¡Muchas gracias! Simple e inexplicable! – Vitalii

Cuestiones relacionadas