Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como usar variáveis ​​​​Mysql com Hibernate?


Bem, finalmente uso o procedimento armazenado (sim, o que não quero inicialmente) para criar consulta dinâmica (acho que não era possível).

Aqui está meu código:O procedimento armazenado:
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 ;

A dica é o uso da função CONCAT para criar dinamicamente uma consulta no procedimento armazenado.

Em seguida, chame o procedimento na função clássica de hibernação:
Query q = em.createNativeQuery("CALL updateRank('lvl')");
q.executeUpdate();