gpt4 book ai didi

java - 使用 JPA 中的 LocalDateTime 列类型在 MariaDB 中创建 DATETIME

转载 作者:行者123 更新时间:2023-12-02 01:53:17 28 4
gpt4 key购买 nike

我需要使用 JPA 中的 LocalDateTime 列类型在 MariaDB 中创建 DATETIME 列。

我创建了这个实体:

@Column
private LocalDateTime created_at;

但是当我存储代码时,MariDB 中的列会更新为DATE。我需要DATETIME

我也尝试过这个:

@Column
@Temporal(TemporalType.TIMESTAMP)
private LocalDateTime created_at;

但是当我部署代码时出现错误:

@Temporal should only be set on a java.util.Date or java.util.Calendar property

我使用 Java 10 和 spring-boot-starter-parent

    <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath />
</parent>

这个问题有解决办法吗?例如,有没有一种方法可以在不使用 @Temporal 的情况下将实体中的列类型设置为 DATETIME

最佳答案

如果要将 LocalDateTime 存储在 TIMESTAMP 列中,则需要实现到 java.sql.Timestamp 的映射。

您需要实现 AttributeConverter界面。

@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());
}
}

关于java - 使用 JPA 中的 LocalDateTime 列类型在 MariaDB 中创建 DATETIME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52677792/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com