Bueno, finalmente uso el procedimiento almacenado (sí, lo que no quiero inicialmente) para crear una consulta dinámica (no creo que fuera posible).
Aquí está mi código:El procedimiento almacenado:
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 ;
El consejo es el uso de la función CONCAT para crear dinámicamente una consulta en el procedimiento almacenado.
Luego, llame al procedimiento en la función clásica de hibernación:
Query q = em.createNativeQuery("CALL updateRank('lvl')");
q.executeUpdate();