さて、私は最終的にストアドプロシージャ(はい、最初は必要ないもの)を使用して動的クエリを作成します(それが可能だったとは思いません)。
これが私のコードです:ストアドプロシージャ:
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 ;
ヒントは、CONCAT関数を使用して、ストアドプロシージャで動的にクエリを作成することです。
次に、従来の休止状態関数でプロシージャを呼び出します。
Query q = em.createNativeQuery("CALL updateRank('lvl')");
q.executeUpdate();