@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 указывает тип данных времени.