繁体   English   中英

map MySql TIMESTAMP 到 java.lang.Long 有什么办法吗?

[英]Is there any way to map MySql TIMESTAMP to java.lang.Long?

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

工作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM