sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo usar variables Mysql con Hibernate?

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