当我的字段由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;
我现在不知道发生了什么,因为应用程序的操作相同并且具有不同的行为
答案 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;