LocalDateTime JPA-Java 8

时间:2019-11-13 15:00:56

标签: java hibernate jpa jpa-2.0 postgresql-9.4

当我的字段由JPA保留时,它在某些时间保存了正确的日期和其他时间,但没有保存,只有一个日期是正确的,但是时间为零(00:00:00)。

更正: 2019/11/13 11:05:12
不正确: 2019/11/13 00:00:00

我的数据库是PostgreSQL,我的字段是timestamp类型

在java类中,我的字段被这样标注:

@Column(name = "DAT_ACTION")
private LocalDateTime espDatAction;

我现在不知道发生了什么,因为应用程序的操作相同并且具有不同的行为

2 个答案:

答案 0 :(得分:0)

如果要将LocalDate属性存储在DATE列中,或者将LocalDateTime存储在TIMESTAMP列中,则需要自己定义到java.sql.Date或java.sql.Timestamp的映射。您可以尝试添加以下内容,然后重新启动应用程序,该应用程序应在之后正确保存:

import java.time.LocalDateTime;
import java.sql.Timestamp;
 
@Converter(autoApply = true)
public class LocalDateTimeAttributeConverter implements AttributeConverter<LocalDateTime, Timestamp> {
     
    @Override
    public Timestamp convertToDatabaseColumn(LocalDateTime locDateTime) {
        return locDateTime == null ? null : Timestamp.valueOf(locDateTime);
    }
 
    @Override
    public LocalDateTime convertToEntityAttribute(Timestamp sqlTimestamp) {
        return sqlTimestamp == null ? null : sqlTimestamp.toLocalDateTime();
    }
}

答案 1 :(得分:0)

在JPA 2.2新版本中使用这种方式

import com.fasterxml.jackson.annotation.JsonFormat;

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="dd/MM/yyyy HH:mm:ss")
private LocalDateTime espDatAction;