sql >> Base de Datos >  >> RDS >> PostgreSQL

No se puede llamar al procedimiento almacenado 11 de PostgreSQL con Hibernate

Como pgJDBC 42.2.5 se lanzó antes (agosto de 2018) del lanzamiento de PostgreSQL 11 (octubre de 2018), creo que actualmente es un problema dentro del controlador JDBC para PostgreSQL. Creé un problema dentro del repositorio de GitHub.

Para solucionarlo, podría volver a escribir el STORED PROCEDURE como una FUNCTION y usa @NamedStoredProcedureQuery o interactuar directamente con JDBC CallableStatement por ejemplo:

Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/", "postgres", "postgres");

CallableStatement callableStatement = conn.prepareCall("{call f_raise_wage_employee_older_than(?,?)}");
callableStatement.setInt(1, 20);
callableStatement.setInt(2, 500);
callableStatement.executeUpdate();

O ejecute una consulta nativa con el EntityManager :

this.em.createNativeQuery("CALL p_raise_wage_employee_older_than(1, 20)");

Actualizaré esta respuesta tan pronto como obtenga una respuesta del mantenedor de pgJDBC.

ACTUALIZACIÓN:

Este tema ya se trata en la lista de correo de Postgres (https://www.postgresql.org/message-id/4285.1537201440%40sss.pgh.pa.us ) y actualmente no hay solución. La única forma es pasar consultas SQL nativas a la base de datos o reescribir el STORED PROCEDURE como una FUNCTION