我有一个字段LocalDate
的课程,我想继续。
@Entity
public class Employee {
private Long id;
private LocalDate issueDate;
// ... ///
// getters and setters
}
当我尝试通过执行
从数据库中获取对象时 Employee Employee = em.find(Employee.class, 1L)
我得到一个例外:
org.eclipse.persistence.exceptions.ConversionException /..../
could not be converted to [class java.time.LocalDate
然后我跟着那个tutorial并在LocalDate和String之间写了转换器。它有效,但使用EclipseLink
和MariaDB
我只能以这样的方式保持日期:“yyyy-MM-dd”。这样我就无法存储小时,分钟和秒钟。 EclipseLink提供以下异常:java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: HourOfDay
。如何存储更精确的时间?
我的转换器:
@Converter(autoApply = true)
public class LocalDateConverter implements AttributeConverter<LocalDate, String> {
private static final DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("yyyy-MM-dd").toFormatter();
@Override
public String convertToDatabaseColumn(LocalDate locDate) {
return (locDate == null ? null : locDate.format(formatter));
}
@Override
public LocalDate convertToEntityAttribute(String sqlDate) {
return (sqlDate == null ? null : LocalDate.parse(sqlDate, formatter));
}
}
答案 0 :(得分:1)
我可以看到你的代码中有错误, 因为LocalDate没有时间参数所以你得到了那个例外。
要解决您的问题,您应该在DateTimeFormatter
private static final DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("yyyy-MM-dd").toFormatter();
确保DateTimeFormatter