MySql регистрирует мой запрос на обновление, но фактически не выполняет обновление - PullRequest
0 голосов
/ 15 февраля 2019

Я обновляю объект через Hibernate, но, несмотря на то, что SQL появляется в журналах MySql без ошибок, обновление, похоже, не происходит.

Я выполняю свой запрос через Hibernate.Я проследил код через эту строку в коде соединителя mysql , и все выглядит хорошо.

Когда эта строка выполнена, запрос обновления, который выглядит правильно, появляется в моем журнале sql (это идентично тому, что содержится в PreparedStatement).Если я копирую этот SQL-запрос прямо из журнала и выполняю его в другом соединении, он работает и данные обновляются правильно.Однако, не запуская его вручную, MySql регистрирует запрос, но данные не обновляются.

У нас нет триггеров ни в таблице, для которой мы выполняем обновление, ни в ее схеме.

Версии: Hibernate 3.6.10, MySql Connector J 5.1.41, Mysql 5.6

Боковое примечание:

Стоит отметить, чтоHibernate, кажется, считает, что объект был обновлен, даже после выселения.Я проверил это, открыв консоль eval в Idea и выполнив команду findById.

Hibernate возвратил обновленный объект, но MySql ничего не регистрировал, указывая, что мне, вероятно, пришлось evict объект из Hibernate.Я выселил объект (также через всплывающее окно eval) и выполнил еще один findById.На этот раз запрос select записывается в журналы MySql, а обновленный объект возвращается .

Однако копирование запроса select из журналов sql и выполнение его в другом соединении непосредственно с БД НЕ возвращает обновленный объект - он возвращает старый объект.Weird.

1 Ответ

0 голосов
/ 15 февраля 2019

Черт бы тебя побрал!(Это ошибка машины, а не моя, верно?)

Я не осознавал этого, но мои обновления были свернуты в транзакцию.Это происходило в методе довольно далеко вверх по цепочке вызовов.Транзакция так и не была совершена из-за исключительной ситуации, которая также была смещена дальше.Я не очень знаком с транзакциями, и не думал об этом как о потенциальной причине.Коллега обнаружил проблему, отступив назад и заметив аннотацию Spring.Это также можно заметить в логах MySql, я просто пропустил это.

Спасибо всем, кто посмотрел и прокомментировал!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...