Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie verwende ich MySQL-Variablen mit Hibernate?

Nun, ich benutze endlich eine gespeicherte Prozedur (ja, was ich anfangs nicht möchte), um eine dynamische Abfrage zu erstellen (ich glaube nicht, dass es möglich war).

Hier ist mein Code:Die gespeicherte Prozedur:

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 ;

Der Tipp ist die Verwendung der CONCAT-Funktion, um dynamisch eine Abfrage in der gespeicherten Prozedur zu erstellen.

Rufen Sie dann die Prozedur in der klassischen Hibernate-Funktion auf:

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