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.
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:
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!!
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:– 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
Nota: Como veran cree una clase en la cual se recibe lo el resultado del Stored Procedure. Notar como se envian los parametros.
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;
}
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 JAVAthis.idPerdidaDiariaProduccion = idPerdidaDiariaProduccion;
}
}
HimanSessions session = hibernateDAO.getSession();
Query query = session.getNamedQuery(“getHorasParoPozo”);
query.setInteger(“idPozo”, 19);
query.setDate(“desde”, desde);
query.setDate(“hasta”, hasta);
Set
Espero que les haya servido!!
No hay comentarios.:
Publicar un comentario