【发布时间】:2019-10-18 06:26:55
【问题描述】:
我正在使用带有 JPA 和 Lombok 的 Spring Boot。
我的 Sample 实体包含四个日期,批准 日期、样品日期,以及由 JPA 自己使用 Auditable 类维护的 createdAt 和 modifiedAt。 JPA 管理模式、运行 MySQL 的数据库,所有日期列都是DateTime。所有日期都属于java.util.Date。
示例实体(出于某种原因进行了简化)
@Entity
@Data
@EqualsAndHashCode(callSuper = false)
public class Sample extends Auditable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Integer id;
Date approved;
@DateTimeFormat(pattern = "yyyy-MM-dd'T'H:m")
Date sampleDate;
}
sampleDate 上的DateTimeFormat 是为了帮助 Spring 将表单数据转换为 java.util.Date。
Auditable.java
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class Auditable {
@CreatedDate
@Column(name = "created_at", updatable = false, nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date createdAt;
@LastModifiedDate
@Column(name = "modified_at")
@Temporal(TemporalType.TIMESTAMP)
private Date modifiedAt;
}
当我的控制器执行此操作时:
Sample s = sampleRepository.getOne(id);
s.setApproved(new Date());
sampleRepository.save(s);
Spring 生成此错误消息:
com.mysql.cj.jdbc.exceptions.MysqlDataTruncation:数据截断:第 1 行的“已批准”列的数据太长
【问题讨论】:
-
示例数据库模式的外观如何?
-
approved列的最大长度是多少?
标签: java mysql spring spring-data-jpa