Wie werden PostgreSQL-Funktionen (gespeicherte Prozeduren) in Spring / Hibernate / JPA richtig aufgerufen?

Ich verwende Spring MVC 4, Hibernate und PostgreSQL 9.3 und habe die Funktion (gespeicherte Prozedur) in Postgres wie folgt definiert:

CREATE OR REPLACE FUNCTION spa.create_tenant(t_name character varying)
  RETURNS void AS
  $BODY$
    BEGIN
      EXECUTE format('CREATE SCHEMA IF NOT EXISTS %I AUTHORIZATION postgres', t_name);
    END
  $BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION spa.create_tenant(character varying)
OWNER TO postgres;

Wenn ich diese Funktion in pgAdmin wie folgt ausführe, funktioniert sie einwandfrei:

select spa.create_tenant('somename');

Jetzt versuche ich, diese Funktion von meinem Dienst aus wie folgt auszuführen:

@Override
@Transactional
public void createSchema(String name) {
    StoredProcedureQuery sp = em.createStoredProcedureQuery("spa.create_tenant");
    sp.registerStoredProcedureParameter("t_name", String.class, ParameterMode.IN);
    sp.setParameter("t_name", name);
    sp.execute();
}

Wenn ich meine Methode ausführe, wird folgender Fehler angezeigt:

javax.persistence.PersistenceException: org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111

Ich vermute, das liegt am Rückgabetyp void, der in function definiert ist. Ich habe den Rückgabetyp folgendermaßen geändert:

RETURNS character varying AS

Wenn ich meine Methode erneut ausführe, erhalte ich stattdessen diese Ausnahme:

javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Error calling CallableStatement.getMoreResults

Weiß jemand, was hier vor sich geht und wie man gespeicherte Prozeduren in PostgreSQL auch mit void als Rückgabetyp richtig aufruft?