खैर, मैं अंततः गतिशील क्वेरी बनाने के लिए संग्रहीत प्रक्रिया (हाँ, जो मैं शुरू में नहीं चाहता) का उपयोग करता हूं (मुझे नहीं लगता कि यह संभव था)।
यहाँ मेरा कोड है:संग्रहीत कार्यविधि:
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();