sql >> Database >  >> RDS >> PostgreSQL

Kan PostgreSQL's 11 Stored Procedure niet aanroepen met Hibernate

Aangezien de pgJDBC 42.2.5 eerder (augustus 2018) werd uitgebracht voor de PostgreSQL 11-release (oktober 2018), denk ik dat dit momenteel een probleem is in het JDBC-stuurprogramma voor PostgreSQL zelf. Ik heb een probleem gemaakt binnen de GitHub-repository.

Voor een tijdelijke oplossing kunt u de STORED PROCEDURE . herschrijven als een FUNCTION en gebruik @NamedStoredProcedureQuery of rechtstreeks communiceren met de JDBC CallableStatement bijv.:

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();

Of voer een native query uit met de EntityManager :

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

Ik zal dit antwoord bijwerken zodra ik een antwoord krijg van de pgJDBC-beheerder.

UPDATE:

Dit onderwerp is al besproken in de Postgres-mailinglijst (https://www.postgresql.org/message-id/4285.1537201440%40sss.pgh.pa.us ) en er is momenteel geen oplossing. De enige manier is om native SQL-query's door te geven aan de database of de STORED PROCEDURE te herschrijven als een FUNCTION



  1. Snelste manier om een ​​object in te voegen als het niet bestaat met SQLAlchemy

  2. Probleem met mysqldump:--defaults-extra-file optie werkt niet zoals verwacht

  3. Wat is het SQL-commando om de veldnamen van een tabel te retourneren?

  4. De primaire sleutel verkrijgen van een ingevoegde DataSet om in andere invoegingen te ketenen