sql >> Database teknologi >  >> RDS >> PostgreSQL

Kan ikke kalde PostgreSQL's 11 Stored Procedure med Hibernate

Da pgJDBC 42.2.5 blev udgivet før (aug, 2018) til PostgreSQL 11-udgivelsen (okt, 2018), tror jeg, at dette i øjeblikket er et problem i selve JDBC-driveren til PostgreSQL. Jeg har oprettet et problem i GitHub-lageret.

Som en løsning kan du omskrive STORED PROCEDURE som en FUNCTION og brug @NamedStoredProcedureQuery eller interagere direkte med JDBC CallableStatement f.eks.:

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

Eller udfør en indbygget forespørgsel med EntityManager :

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

Jeg opdaterer dette svar, så snart jeg får et svar fra pgJDBC-vedligeholderen.

OPDATERING:

Dette emne er allerede diskuteret på Postgres postliste (https://www.postgresql.org/message-id/4285.1537201440%40sss.pgh.pa.us ), og der er i øjeblikket ingen løsning. Den eneste måde er at sende indbyggede SQL-forespørgsler til databasen eller omskrive STORED PROCEDURE som en FUNCTION



  1. Migrer MS Access til MySQL

  2. MySql-fejl opstår natten over - Sidste pakke sendt til serveren var for 0 ms siden

  3. indsæt autoincrement i anden kolonne

  4. Lodret skalering af PostgreSQL