В настоящее время я столкнулся с проблемой в Hibernate, когда метка времени создания объекта не устанавливается при первом сохранении, а метка времени обновления. Поскольку обе временные метки определены как не допускающие значения NULL, я столкнулся с исключением.
Вот что я делаю с сущностью:
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;
...
Я уже много гуглил и искал на coderhelper, но не смог найти по этой теме. Я хочу, чтобы отметка времени создания также была заполнена (здесь я не возражаю против отметки времени обновления), но я также хочу, чтобы все было в одной транзакции.
Есть идеи?
Ну, я не знаю, почему это так, но как только я определил столбец createdAt как @Column(nullable = false, updateable = false), он работает нормально.