Hibernate + Store procedures con parametros

He visto que no hay mucha documentacion y ejemplos del uso de stored procedures con Hibernate. Asi que lo me decidi a postear es ejemplo completo que a mi me funciono:

Codigo del store procedures:
Nota: Es importante utilizar el nombre del SP para llamarlo desde JAVA.
CREATE PROCEDURE getHorasParoPozos
– Add the parameters for the stored procedure here
@fechaDesde DateTime,
@fechaHasta DateTime
AS
BEGIN
– SET NOCOUNT ON added to prevent extra result sets from
– interfering with SELECT statements.
SET NOCOUNT ON;
– Insert statements for procedure here
SELECT
1 AS idPerdidaDiariaProduccion,
Sum(perdida_diaria_produccion.horasParo) AS horasParo
FROM
perdida_diaria_produccion
WHERE
perdida_diaria_produccion.fechaParo >= @fechaDesde AND
perdida_diaria_produccion.fechaParo <= @fechaHasta
GROUP BY
perdida_diaria_produccion.idInstalacion
END
Archivo XML de mapeo:
Nota: Como veran cree una clase en la cual se recibe lo el resultado del Stored Procedure. Notar como se envian los parametros.











{call getHorasParoPozo(:idPozo,:desde,:hasta)}

Clase JAVA que es declarada en el XML de mapping:
package modelo.hibernate.storeProcedures;
import java.io.Serializable;
public class HorasParoPozos_SP implements Serializable {
/**
* Es un objeto donde se mapea un store procedures de la base de datos.
*/
private static final long serialVersionUID = 1L;
private Integer idPerdidaDiariaProduccion; private Float horasParo;
public Float getHorasParo() {
return horasParo;
}
public void setHorasParo(Float horasParo) {
this.horasParo = horasParo;
}
public Integer getIdPerdidaDiariaProduccion() {
return idPerdidaDiariaProduccion;
}
public void setIdPerdidaDiariaProduccion(Integer idPerdidaDiariaProduccion) {
this.idPerdidaDiariaProduccion = idPerdidaDiariaProduccion;
}
}
Por ultimo esta el llamado al Stored Procedure desde otra clase JAVA
HimanSessions session = hibernateDAO.getSession();
Query query = session.getNamedQuery(“getHorasParoPozo”);
query.setInteger(“idPozo”, 19);
query.setDate(“desde”, desde);
query.setDate(“hasta”, hasta);
Set perdidasDiariaProduccion = new HashSet(query.list());


Espero que les haya servido!!

No hay comentarios.: