Поле для метки времени обновления устанавливается вместо метки времени создания

#hibernate

Вопрос:

В настоящее время я сталкиваюсь с проблемой гибернации, когда метка времени создания объекта не задана при его первом сохранении, но метка времени обновления задана. Поскольку обе метки времени определены как не подлежащие обнулению, я сталкиваюсь с исключением.

Вот что я делаю с сущностью:

 Session session = ...;
Transaction transaction = session.beginTransaction();
MyEntity entity = new MyEntity();
session.save(entity); // save entity to get the ID
... set the ID on some other entities ...
session.save(otherEntity);
entity.modifySomething();
session.update(entity); // it actually doesn't matter if I do this call or not
transaction.commit();
 

Класс сущности выглядит следующим образом:

 @Data
@NoArgsConstructor
@Entity
public class MyEntity
{
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "lexeme_seq")
    @SequenceGenerator(name = "lexeme_seq", sequenceName = "lexeme_seq", allocationSize = 10)
    private Long id;

    @CreationTimestamp
    @Column(nullable = false)
    private Instant createdAt;

    @UpdateTimestamp
    @Column(nullable = false)
    private Instant updatedAt;

...
 

Я уже много гуглил и искал в stackoverflow, но не смог найти по этой теме.
Я хочу, чтобы отметка времени создания также была заполнена (я не возражаю против отметки времени обновления здесь), но я также хочу, чтобы все было в одной транзакции.

Есть какие-нибудь идеи?

Комментарии:

1. Ну, я не знаю, почему это так, но как только я определил столбец createdAt как @Column(nullable = false, обновляемый = false), он работает нормально.