Hibernate экранирование ":" персонажа - PullRequest
0 голосов
/ 09 ноября 2018

Я нашел здесь несколько постов и несколько ответов. Я пробовал каждый из них с плохими результатами. Я не хочу использовать хранимые процедуры.

Я использую Hibernate на Java с MySQL. Часть моей строки запроса:

SET @rank = 0; 
SET @limit = 0.1; 
SELECT (@limit := ROUND(COUNT(id) * @limit)) FROM Pics;
SELECT Q1.popularity FROM Pics AS p INNER JOIN (
   SELECT IF((@rank := @rank + 1) <= @limit, true, false) AS 'popularity', p.id 
   FROM Pics AS p 
   ORDER BY p.points DESC
) AS Q1 ON Q1.id = p.id WHERE p.id = 7;

Некоторые люди говорят, что решение использует /*'*/:=/*'*/ внутри запроса ( post ), но оно не работает для меня:

SET @rank = 0; 
SET @limit = 0.1; 
SELECT (@limit /*'*/:=/*'*/ ROUND(COUNT(id) * @limit)) FROM Pics;
SELECT Q1.popularity FROM Pics AS p INNER JOIN (
   SELECT IF((@rank /*'*/:=/*'*/ @rank + 1) <= @limit, true, false) AS 'popularity', p.id 
   FROM Pics AS p 
   ORDER BY p.points DESC
) AS Q1 ON Q1.id = p.id WHERE p.id = 7;

Я отчаялся!

Есть идеи, пожалуйста? Я был бы так благодарен!

Спасибо!

1 Ответ

0 голосов
/ 10 ноября 2018

Наконец, я могу исправить это с помощью двойной обратной косой черты внутри кода запроса Java:

SET @rank = 0; 
SET @limit = 0.1; 
SELECT (@limit \\:= ROUND(COUNT(id) * @limit)) FROM Pics;
SELECT Q1.popularity FROM Pics AS p INNER JOIN (
   SELECT IF((@rank \\:= @rank + 1) <= @limit, true, false) AS 'popularity', p.id 
   FROM Pics AS p 
   ORDER BY p.points DESC
) AS Q1 ON Q1.id = p.id WHERE p.id = 7;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...