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();