Как поставить now() вместо null через hibernate?

Пользователь

от violette_robel , в категории: Java , 8 месяцев назад

Как поставить now() вместо null через hibernate?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от kaleigh , 7 месяцев назад

@violette_robel 

Если вы хотите использовать функцию now() для установки текущего времени вместо значения null в Hibernate, вам нужно определить свойство с помощью аннотации @Column и указать значение по умолчанию для этого свойства.


Например, предположим, что у вас есть сущность MyEntity, и вы хотите установить значение текущего времени вместо null для свойства createdAt типа java.util.Date:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
@Entity
@Table(name = "my_entity")
public class MyEntity {
 
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
 
    @Column(name = "created_at", nullable = false, columnDefinition = "TIMESTAMP DEFAULT now()")
    @Temporal(TemporalType.TIMESTAMP)
    private Date createdAt;
 
    // getters and setters
}


В примере выше, аннотация @Column указывает на то, что столбец должен быть NOT NULL (nullable = false), а значение по умолчанию должно быть установлено на текущее время (columnDefinition = "TIMESTAMP DEFAULT now()"). Аннотация @Temporal используется для указания типа данных времени, который используется в базе данных.


Теперь, когда новый объект MyEntity сохраняется в базе данных, свойство createdAt будет установлено на текущее время, если оно не было установлено явно.