Я использую Spring Boot с JPA и Lombok. Моя сущность Sample содержит четыре даты: утвержденную дату, дату выборки и createdAt
и modifiedAt
, которые поддерживаются самой JPA с классом Auditable
. 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;
}
DateTimeFormat
на sampleDate
призван помочь 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