Call function da Oracle con Datasource e Hibernate

di il
1 risposte

Call function da Oracle con Datasource e Hibernate

Come da titolo ho un progetto con Jpa 2.1, Hibernate e Oracle. La connessione avviene tramite DataSource implementato da Tomcat 8.5. Sono riuscito a richiamare senza problemi una Stored Procedure. Ora ho una semplice function:

--FUNZIONI
CREATE or REPLACE FUNCTION calcola_media RETURN number IS
    media NUMBER := 0;
    
    BEGIN
        SELECT AVG(stipendio) INTO media FROM IMPIEGATO;
        RETURN media;
    END;
Vorrei riuscire a richiamarla con Java, usando entity manager, come posso fare?

1 Risposte

  • Re: Call function da Oracle con Datasource e Hibernate

    Ammetto di non aver mai provato, ma mi pare che JPA 2.1 metta a disposizione la funzione "function()" per poter richiamare una StoredFunction da JPQL:
    
    TypedQuery<TuaEntity> qry = entityManager.createQuery("SELECT e FROM TuaEntity e WHERE e.stipendio >= function('calcola_media')", TuaEntity.class);
    
    Attenzione ai casi d'uso però: se la vuoi usare nella WHERE clause non dovresti aver problemi. Se la vuoi usare nella SELECT clause devi prima registrarla, andando a creare così un dialetto customizzato.

    Puoi seguire questo tutorial: https://thoughts-on-java.org/database-functions

    Ciao.
Devi accedere o registrarti per scrivere nel forum
1 risposte