Задать вопрос
@shushara4241

Почему поле @CreationTimestamp в Entity после save = null?

Фреймворк Spring
Модель:
676aefeb47e06943914909.png

Есть такой метод в контроллере
676aef314336c514834953.png
Содержимое DTO для обновления полей:
676aef8ca4a4b777758611.png
Маппер в модель не добавляет поля createdAt и updatedAt перед обновлением данных:
676af033e1987434434741.png
Код сервиса для обновления:
676af192ca1ed686121256.png
После того, как в сервисе обновляются данные, кроме updatedAt и createdAt, то поле updatedAt приходит необновленным, а createdAt вообще null. Можно ли как-то сохранять модель и при этом обогащать ее актуальными данными? В отладке
видны запросы на получение из бд всех полей
676af0ea58675673791536.png

Если увидели еще какие-то ошибки, просьба тоже заодно указать
  • Вопрос задан
  • 46 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
xez
@xez Куратор тега Java
TL Junior Roo
Тут главная ошибка - это использование богомерзкого гибернейта.
0. Главное, что нужно понять: БД - это не часть приложения, это внешний сервис. Ну нужно связывать свое приложение намертво с внешними сервисами, тем более размазывать логику между ними.
1. Если вам необходимы поля updatedAt и createdAt в вашей доменной модели, то и заполнять, и изменять их лучше на своей стороне, а не ждать когда это соизволит сделать БД или ваша ОРМ.
2. Кажется классным, на первый взгляд, если вы делаете операцию сохранения и при этом получаете еще апдейт вашей модели, но это все сайд-эффект, во первых, во-вторых не очевидное поведение, в третьих ни разу не потоко-безопасно и вообще все вместе зловонный, потенциально опасный код, который сулит непредсказуемые последствия в проде.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
25 дек. 2024, в 08:00
20000 руб./за проект
25 дек. 2024, в 07:53
20000 руб./за проект
25 дек. 2024, в 07:45
20000 руб./за проект