PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Impossible d'appeler la procédure stockée 11 de PostgreSQL avec Hibernate

Comme le pgJDBC 42.2.5 a été publié avant (août 2018) la version PostgreSQL 11 (octobre 2018), je pense que c'est actuellement un problème dans le pilote JDBC pour PostgreSQL lui-même. J'ai créé un problème dans le dépôt GitHub.

Pour une solution de contournement, vous pouvez réécrire la STORED PROCEDURE en tant que FUNCTION et utilisez @NamedStoredProcedureQuery ou interagir directement avec le JDBC CallableStatement par exemple :

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 exécutez une requête native avec le EntityManager :

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

Je mettrai à jour cette réponse dès que j'aurai une réponse du responsable de pgJDBC.

MISE À JOUR :

Ce sujet est déjà abordé dans la liste de diffusion Postgres (https ://www.postgresql.org/message-id/4285.1537201440%40sss.pgh.pa.us ) et il n'y a actuellement aucune solution. Le seul moyen est de transmettre des requêtes SQL natives à la base de données ou de réécrire la STORED PROCEDURE en tant que FUNCTION