böyle Postgres içeride Spring MVC 4, Hibernate ve PostgreSQL 9.3 ve tanımladık fonksiyonu (saklı yordam) kullanıyorum: Böyle pgAdmin içinde bu işlevi çalıştırırsanız düzgün şekilde çalışıyorsaSpring/Hibernate/JPA içinde PostgreSQL işlevlerini (saklı yordamları) doğru olarak nasıl çağırılır?
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;
:
select spa.create_tenant('somename');
Şimdi böyle benim hizmetten bu işlevi çalıştırmak çalışıyorum:
@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();
}
aşağıdaki hatayı alıyorum benim yöntemi çalıştırırsanız: Benim yöntemi çalıştırırsanız tekrar alıyorum
RETURNS character varying AS
: Bunu tahmin ediyorum
javax.persistence.PersistenceException: org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111
yüzden bu gibi görünmek türü dönmek değişti çünkü fonksiyonu tanımlanır dönüş türü void olan Bunun yerine bu istisna:
javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Error calling CallableStatement.getMoreResults
kimse burada oluyor ve nasıl düzgün hatta dönüş türü olarak boşluğa ile PostgreSQL saklanan prosedürleri aramak olduğunu biliyor mu? Zaten yazdım olarak
Nasıl bir JDBC CallableStatement çağırır:
bazı kukla değeri döndürmek için işlev değiştirmiş sonra bu saklı yordam sorguyu değiştirmek? Tüm JPA API'sı etrafı sarar. Hazırda Bekletme, JDBC'nin verdiği şeyi yansıtmıyorsa, bunu nasıl işlediğini görmek için farklı bir JPA sağlayıcısı deneyin. –