Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment utiliser les variables Mysql avec Hibernate ?

Eh bien, j'ai finalement utilisé une procédure stockée (oui, ce que je ne voulais pas au départ) pour créer une requête dynamique (je ne pense pas que ce soit possible).

Voici mon code :La procédure stockée :

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 ;

L'astuce est l'utilisation de la fonction CONCAT pour créer dynamiquement une requête dans la procédure stockée.

Ensuite, appelez la procédure dans la fonction d'hibernation classique :

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