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

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

от violette_robel , в категории: Java , 2 года назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от kaleigh , 2 года назад

@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 будет установлено на текущее время, если оно не было установлено явно.

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

от landen.nienow , год назад

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