JPA - сохраняйте @Temporal LocalDate, используя конвертер - PullRequest
0 голосов
/ 08 января 2019

Невозможно скомпилировать код, используя @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>
...

Окружающая среда

  1. JDK 8
  2. Eclipse JEE - 2018-09
  3. зимуют-JPA-2,1-апи-1.0.2.Final.jar
  4. зимуют-валидатор-6.0.14.Final.jar
  5. hibernate-validator-cdi-6.0.14.Final.jar
  6. javax.el-3.0.1-b11.jar
  7. jboss-logging-3.3.2.Final.jar
  8. проверка-апи-2.0.1.Final.jar
  9. зимуют-java8-5.1.0.Final.jar
  10. зимуют-EntityManager-5.3.7.Final.jar
  11. одноклассник-1.3.4.jar

Ошибка компиляции Eclipse (в @Temporal строка аннотации в коде сущности):

Постоянное поле или свойство для временного типа должно иметь тип java.util.Date, java.util.Calendar или java.util.GregorianCalendar

Удаление @Temporal компилируется нормально. Разве это не требуется для классов даты и времени (java.time) в Java8?

Пожалуйста, помогите решить проблему, спасибо.

1 Ответ

0 голосов
/ 08 января 2019

Примечание @Temporal не требуется для нового пакета java.time классов. Это было необходимо для java.util.Date, потому что эта «Дата» была попыткой найти универсальное решение, которое только ухудшало ситуацию.

Вам также не нужен конвертер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...