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

标签 java mysql jpa spring-data-jpa spring-data

因此,我将此对象保存到数据库中,其中一个属性是 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/

相关文章:

java - 检查句子是否包含某些单词

java - 为什么TreeSet的add方法在不同的JRE中表现不同?

java - 区分Java中的基本SQLException类型?

php - 从sql php获取所有数据

jpa - 如何配置 JPA 以使用 JNDI?

hibernate - 示例标准 Hibernate Multiple Join/Table SQL

java - @OrderColumn、@OneToMany & 用于集合的空索引列

java - 如何将行从 GridView 拖放到 GridView

java - 更改 Java JInternalFrame 标题栏主题

mysql - 通过复制数据.frm和.ibd来复制mysql数据库