[英]Java Generics, Reflection API & JDBC: cannot map java.lang.Long and java.sql.Timestamp to a Type
[英]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.Date
或java.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.