gpt4 book ai didi

java - 有没有办法将 MySql TIMESTAMP 映射到 java.lang.Long?

转载 作者:行者123 更新时间:2023-12-04 08:27:45 24 4
gpt4 key购买 nike

所以我将此对象保存到数据库中,其中一个属性是 dateCreated当然,这是保存为 MySQL 时间戳。但是在向客户端发送数据时,我希望以毫秒为单位。现在,我已将其映射到 Date对象并将其进一步转换为毫秒。但我想,如果我能以这样一种方式映射我的 POJO,它会以毫秒为单位检索值。这是我尝试过的。
OmsJob:

@Entity
@EntityListeners(PreventAnyUpdate.class)
@ConfigurationProperties("omsjob")
@Table(name = "OMSJob")
public class OmsJob {

@Id
@NotNull
@Column(name = "jobId")
private String id;

@NotNull
private Long dateCreated; // If I map this property to Date, it works fine

}
我想我会添加一个自定义转换器来转换 java.util.Datejava.sql.Date到毫秒。但它不起作用:
@Component
@ConfigurationPropertiesBinding
public class DateConverter implements Converter<Date, Long> {

@Override
public Long convert(Date date) {
return date.getTime();
}
}
我得到的错误非常明显,但有什么方法可以实现我想要的目标吗?
ERROR 229770 --- [           main] o.h.engine.jdbc.spi.SqlExceptionHelper   : Unsupported conversion from TIMESTAMP to java.lang.Long

最佳答案

一个属性在你声明它之前不会知道它的转换器。请按以下步骤操作:

@NotNull
@Convert (converter = DateConverter.class)
private Long dateCreated;
此外,更改转换器如下:
public class DateConverter implements AttributeConverter<Date, Long> {

@Override
public Date convertToDatabaseColumn(Long millis) {
retrun new Date(millis);
}

@Override
public Long convertToEntityAttribute(Date date) {
return date.getTime();
}
}

关于java - 有没有办法将 MySql TIMESTAMP 映射到 java.lang.Long?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65182984/

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