我的列类型是datetime
`firstExpressTime` datetime NOT NULL ,
我的财产很长 我用
@Column(nullable=false)
private Long firstExpressTime;
但是当我保存实体时,它报告了删除
Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '1415945797963' for column 'firstExpressTime' at row 1
如何解决?在此提前感谢您的任何帮助和建议。
答案 0 :(得分:1)
您应该使用 AttributeConverter。像这样注释你的 Long 字段:
@Convert(converter = DateToLongConverter.class)
private Long birthdate;
并创建您的转换器类:
@Converter
public class DateToLongConverter implements AttributeConverter<Long, Date> {
@Override
public Date convertToDatabaseColumn(Long attribute) {
return new Date(attribute);
}
@Override
public Long convertToEntityAttribute(Date dbData) {
return dbData.getTime();
}
}
答案 1 :(得分:0)
由于在数据库中使用datetime,因此需要在Java / Hibernate代码中使用java.util.Date。
但是,我认为这不应该是一个太大的问题,因为您可以通过调用getTime()随时获取基础时间戳
DbHibernateObj obj = service.getMyObject(id);
long timestamp = obj.getFirstExpressTime().getTime();