簡體   English   中英

使用JPA中的LocalDateTime列類型在MariaDB中創建DATETIME

[英]Create DATETIME in MariaDB using LocalDateTime column type in JPA

我需要使用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());
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM