#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), он работает нормально.