Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como chamar um Stored Procedure do Hibernate com parâmetros IN e OUT


Considerando que você tem um procedimento armazenado simples que gera um tipo básico:
CREATE PROCEDURE count_comments (
   IN postId INT, 
   OUT commentCount INT
) 
BEGIN
    SELECT COUNT(*) INTO commentCount 
    FROM post_comment  
    WHERE post_comment.post_id = postId; 
END

Você pode chamar esse procedimento armazenado usando um JPA StoredProcedureQuery :
StoredProcedureQuery query = entityManager
    .createStoredProcedureQuery("count_comments")
    .registerStoredProcedureParameter(
        "postId", Long.class, ParameterMode.IN)
    .registerStoredProcedureParameter(
        "commentCount", Long.class, ParameterMode.OUT)
    .setParameter("postId", 1L);
 
query.execute();
 
Long commentCount = (Long) query
    .getOutputParameterValue("commentCount");