-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Описание Проблемы:
При редактировании комментария (Comment) через метод CommentServiceImpl.updateUserComment, поле updatedOn (аннотированное @LastModifiedDate) в возвращаемом DTO содержало старое значение.
Это происходило потому, что AuditingEntityListener, отвечающий за установку @LastModifiedDate, срабатывает во время фазы "flush" сессии Hibernate. Без явного вызова flush после изменения полей сущности и перед её маппингом в DTO поле updatedOn в возвращаемом объекте могло содержать старое значение.
Шаги для воспроизведения:
- Создать комментарий.
- Отредактировать комментарий.
- Проверить значение
updatedOnв ответе – оно равноcreatedOn.
Ожидаемое поведение:
Поле updatedOn должно отражать фактическое время последнего изменения комментария.
Предлагаемое решение / Реализация фикса:
В методе CommentServiceImpl.updateUserComment заменить вызов commentRepository.save(existedComment) на commentRepository.saveAndFlush(existedComment). Это обеспечит немедленную синхронизацию с БД и срабатывание AuditingEntityListener для обновления updatedOn перед тем, как сущность будет смаплена в DTO и возвращена.
Критерии готовности:
- Поле
updatedOnвCommentDto, возвращаемом после редактирования комментария, содержит актуальное время изменения, отличное отcreatedOn(если редактирование произошло не в ту же секунду, что и создание). - Существующие тесты, проверяющие обновление комментария, проходят и корректно отражают новое поведение
updatedOn.