PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Não é possível chamar o procedimento armazenado 11 do PostgreSQL com o Hibernate


Como o pgJDBC 42.2.5 foi lançado antes (agosto de 2018) do PostgreSQL 11 (outubro de 2018), acho que isso é atualmente um problema no driver JDBC para o próprio PostgreSQL. Criei um problema dentro do repositório do GitHub.

Para uma solução alternativa, você pode reescrever o STORED PROCEDURE como uma FUNCTION e use @NamedStoredProcedureQuery ou interagir diretamente com o JDBC CallableStatement por exemplo.:
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();

Ou execute uma consulta nativa com o EntityManager :
this.em.createNativeQuery("CALL p_raise_wage_employee_older_than(1, 20)");

Atualizarei esta resposta assim que obtiver uma resposta do mantenedor do pgJDBC.

ATUALIZAÇÃO:

Este tópico já foi discutido na lista de discussão do Postgres (https://www.postgresql.org/message-id/4285.1537201440%40sss.pgh.pa.us ) e atualmente não há solução. A única maneira é passar consultas SQL nativas para o banco de dados ou reescrever o STORED PROCEDURE como uma FUNCTION