Почему при обновлении заголовка книги в базе данные не обновляются, хотя ошибок нет?
Что проверяют
Диагностическое мышление. «Ошибок нет» означает, что либо запрос не ушёл, либо ушёл и откатился, либо ушёл и проверка смотрит не туда. Ждут знания жизненного цикла сущности и границ транзакции, а не перечисления догадок.
Как отвечать
Сузить до одного из трёх мест, и это лучше проговорить именно как порядок действий.
Запрос не ушёл. Включить логирование SQL и привязку параметров и посмотреть, есть ли вообще update. Причины тут специфично джавовые: сущность отсоединена от контекста персистентности, и менять её сеттером бесполезно; стоит @Transactional(readOnly = true), при котором Hibernate переводит сброс в ручной режим и молча выбрасывает изменения; метод с @Transactional вызван изнутри того же бина мимо прокси, поэтому транзакции просто нет; правится не та сущность, а её копия или новый объект с тем же идентификатором.
Запрос ушёл, но не зафиксирован. Транзакция откатилась по исключению, которое поймали и проглотили выше по стеку, либо на голом JDBC при выключенном автокоммите никто не вызвал commit.
Запрос ушёл и зафиксирован, но врёт проверка. executeUpdate вернул ноль строк, потому что условие не попало ни в одну запись, а результат никто не смотрит. Или читают из кеша первого уровня той же сессии, из кеша второго уровня, либо вовсе из другой схемы и другого стенда.
Отдельный случай: запрос с @Modifying идёт мимо контекста, и в нём остаётся старая сущность. На это есть флаги flushAutomatically и clearAutomatically.
Где спотыкаются
Сразу ныряют в код приложения и не проверяют самое дешёвое: дошёл ли update до базы. Одна строка в логе делит пространство причин пополам.
Называют причиной ограничения целостности и триггеры. Нарушение ограничения это исключение, а по условию ошибок нет, значит версия противоречит вопросу.
Путают, когда нужен явный вызов сохранения. Управляемая сущность сохранится и без него на сбросе контекста, а отсоединённой не поможет ни один сеттер, ей нужно слияние или повторная загрузка внутри транзакции.