#java #mysql #hibernate #jpa
Вопрос:
прежде всего, я использую (mysql 5.7, jdk1,8, весенняя загрузка)
@Transactional
@Modifying
@Query(value= "set @COUNT = 0; n"
"UPDATE faq f SET f.id= @COUNT\:=@COUNT 1 WHERE f.id LIKE '%';", nativeQuery = true)
void update();
сообщение консоли (сообщение об ошибке гибернации) является
Hibernate: set @COUNT = 0;
UPDATE faq f SET f.id= @COUNT:=@COUNT 1 WHERE f.id LIKE '%';
(error maessage)
java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE faq f SET f.id= @COUNT:=@COUNT 1 WHERE f.id LIKE '%'' at line 2
но этот запрос хорошо работает в консоли mysql
set @COUNT = 0; UPDATE faq SET id = @COUNT:=@COUNT 1 WHERE f.id like '%';
пожалуйста, помогите мне… Я искал и пробовал множество решений, но ничего не получалось
... UPDATE faq f SET f.id= @COUNT\:=@COUNT 1 WHERE f.id LIKE '%';" ...)
... UPDATE faq f SET f.id= @COUNT|=@COUNT 1 WHERE f.id LIKE '%';" ...)
... UPDATE faq f SET f.id= @COUNT\:=@COUNT 1 ;" ...)
... UPDATE faq f SET f.id= @COUNT\:=(@COUNT 1) ;" ...)
... (UPDATE faq f SET f.id= @COUNT\:=@COUNT 1 ;)" ...)
Комментарии:
1.
@COUNT:=@COUNT 1 id
обратите внимание на удостоверение личности!!! Его там быть не должно2. действительно извините, была опечатка в обработке вопросов для публикации! Я исправил это, и программа все еще выдает ошибку ( ~ ГДЕ ~ -> идентификатор удален), Спасибо, что посмотрели мое беспокойство
3. Вы пытаетесь выполнить 2 запроса одновременно.
set @COUNT = 0;
это первое. Вы не можете этого сделать. Вы можете объединить эти запросы, инициализировав @count в запросе на обновление. Но на самом деле то, что вы делаете, странно. В первую очередь вам не следует возиться со столбцом идентификатора.4. как их совместить ?? я попробовал
update faq f set @COUNT:=0, f.id = @COUNT:=(@COUNT 1) ;
(это не сработало также в консоли ) на самом деле я собираюсь использовать идентификатор для индексирования типа «1. контент, 2. контент»..
Ответ №1:
Вы пытаетесь выполнить 2 запроса одновременно. Это не работает. Вы можете объединить эти запросы, инициализировав @count в запросе обновления следующим образом:
UPDATE faq f
JOIN (SELECT @count := 0) cnt
SET f.id = @COUNT := @COUNT 1
WHERE f.id LIKE '%'
Демонстрация SQLFiddle
Комментарии:
1. наконец-то эти коды сработали! спасибо за помощь и удачной недели, братан 🙂