Невозможно скомпилировать код, используя @Temporal
для LocalDate
.
Код объекта
...
@Temporal(TemporalType.DATE)
private LocalDate creationDate;
public LocalDate getCreationDate() {
return this.creationDate;
}
public void setCreationDate(LocalDate creationDate) {
this.creationDate = creationDate;
}
...
Код конвертера
@Converter(autoApply=true)
public class DateConverter implements AttributeConverter<LocalDate, Date> {
@Override
public Date convertToDatabaseColumn(LocalDate localDate) {
return (localDate == null) ? null : Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
}
@Override
public LocalDate convertToEntityAttribute(Date date) {
return (date==null) ? null : Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDate();
}
}
persistence.xml
...
<persistence-unit name="HR">
<class>test.Employee</class>
<class>test.DateConverter</class>
</persistence-unit>
...
Окружающая среда
- JDK 8
- Eclipse JEE - 2018-09
- зимуют-JPA-2,1-апи-1.0.2.Final.jar
- зимуют-валидатор-6.0.14.Final.jar
- hibernate-validator-cdi-6.0.14.Final.jar
- javax.el-3.0.1-b11.jar
- jboss-logging-3.3.2.Final.jar
- проверка-апи-2.0.1.Final.jar
- зимуют-java8-5.1.0.Final.jar
- зимуют-EntityManager-5.3.7.Final.jar
- одноклассник-1.3.4.jar
Ошибка компиляции Eclipse (в @Temporal
строка аннотации в коде сущности):
Постоянное поле или свойство для временного типа должно иметь тип
java.util.Date, java.util.Calendar или java.util.GregorianCalendar
Удаление @Temporal
компилируется нормально. Разве это не требуется для классов даты и времени (java.time
) в Java8?
Пожалуйста, помогите решить проблему, спасибо.