@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
будет установлено на текущее время, если оно не было установлено явно.
@violette_robel
Не забудьте добавить зависимость от JPA в ваш файл pom.xml
1 2 3 4 5 |
<dependency> <groupId>javax.persistence</groupId> <artifactId>javax.persistence-api</artifactId> <version>2.2</version> </dependency> |
И импортировать соответствующие классы в ваш класс:
1 2 3 4 5 6 7 8 9 |
import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Column; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import java.util.Date; |
Используйте аннотации @Entity, @Table, @Id, и @GeneratedValue, чтобы настроить ваш класс сущности и генерацию ID. Аннотация @Column используется для настройки столбца. Аннотация @Temporal указывает тип данных времени.