Mysql
 sql >> Database >  >> RDS >> Mysql

Come utilizzare le variabili MySQL con Hibernate?

Bene, finalmente utilizzo la stored procedure (sì, cosa non voglio inizialmente) per creare query dinamiche (non credo fosse possibile).

Ecco il mio codice:La procedura memorizzata:

DELIMITER |

DROP PROCEDURE IF EXISTS UpdateRank |

CREATE PROCEDURE UpdateRank(IN shortcut varchar(30))
BEGIN
    SET @rank=0;
    SET @query=CONCAT('UPDATE Rank SET ', shortcut, '[email protected]:[email protected]+1 ORDER BY ', shortcut);     

    PREPARE q1 FROM @query;
    EXECUTE q1;
    DEALLOCATE PREPARE q1;
END;

|
DELIMITER ;

Il suggerimento è l'uso della funzione CONCAT per creare dinamicamente una query nella procedura memorizzata.

Quindi, chiama la procedura nella classica funzione di ibernazione:

Query q = em.createNativeQuery("CALL updateRank('lvl')");
q.executeUpdate();