PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Nie można wywołać procedury składowanej PostgreSQL 11 za pomocą Hibernate

Ponieważ pgJDBC 42.2.5 został wydany przed (sierpień 2018) wydaniem PostgreSQL 11 (październik 2018), myślę, że jest to obecnie problem w sterowniku JDBC dla samego PostgreSQL. Utworzyłem problem w repozytorium GitHub.

Aby obejść ten problem, możesz przepisać STORED PROCEDURE jako FUNCTION i użyj @NamedStoredProcedureQuery lub bezpośrednio wchodzić w interakcję z JDBC CallableStatement np.:

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

Lub wykonaj natywne zapytanie za pomocą EntityManager :

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

Zaktualizuję tę odpowiedź, gdy tylko otrzymam odpowiedź od opiekuna pgJDBC.

AKTUALIZACJA:

Ten temat jest już omówiony na liście mailingowej Postgres (https://www.postgresql.org/message-id/4285.1537201440%40sss.pgh.pa.us ) i obecnie nie ma rozwiązania. Jedynym sposobem jest przekazanie natywnych zapytań SQL do bazy danych lub przepisanie STORED PROCEDURE jako FUNCTION



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie r sf::st_write do niepublicznego schematu w PostgreSQL

  2. Jak odróżnić nazwę zmiennej plpgsql w klauzuli ON CONFLICT?

  3. PostgreSQL Uzyskaj losową datę/czas/znacznik czasu pomiędzy dwoma datami/czasami

  4. PostgreSQL:unikalne ograniczenie lub unikalny indeks

  5. Jak zainstalować rozszerzenia Postgres podczas tworzenia bazy danych?