PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Die gespeicherte Prozedur von PostgreSQL 11 kann nicht mit Hibernate aufgerufen werden

Da pgJDBC 42.2.5 vor (August 2018) der PostgreSQL 11-Version (Oktober 2018) veröffentlicht wurde, denke ich, dass dies derzeit ein Problem innerhalb des JDBC-Treibers für PostgreSQL selbst ist. Ich habe ein Problem erstellt im GitHub-Repository.

Als Problemumgehung könnten Sie die STORED PROCEDURE umschreiben als FUNCTION und verwenden Sie @NamedStoredProcedureQuery oder direkt mit dem JDBC CallableStatement interagieren zB:

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

Oder führen Sie eine native Abfrage mit dem EntityManager aus :

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

Ich werde diese Antwort aktualisieren, sobald ich eine Antwort vom pgJDBC-Betreuer erhalte.

AKTUALISIERUNG:

Dieses Thema wird bereits in der Postgres-Mailingliste (https://www.postgresql.org/message-id/4285.1537201440%40sss.pgh.pa.us ) und es gibt derzeit keine Lösung. Die einzige Möglichkeit besteht darin, native SQL-Abfragen an die Datenbank zu übergeben oder die STORED PROCEDURE neu zu schreiben als FUNCTION