У меня проблема с управлением датами в миллисекундах. Я понимаю необходимость использования TIMESTAMP для хранения миллисекунд:
@Temporal(TIMESTAMP)
@Column(name="DATE_COLUMN", nullable = false)
@Override public java.util.Date getDate() { return this.date; }
Но если я не могу сравнить эту дату с другим экземпляром java.util.Date, если я не обращаю внимания на порядок вызова equals (), потому что this.date
- это java.sql.Timestamp. Как получить java.util.Date из JPA? Поскольку дата, полученная из JPA, даже если подпись метода - java.util.Date, на самом деле является экземпляром java.sql.Timestamp.
java.util.Date newDate = new Date(this.date.getTime());
this.date.equals(newDate) == false
newDate.equals(this.date) == true
Я попытался изменить свой метод в классе постоянства:
@Override
public Date getDate() {
return this.date == null ? null : new Date(this.date.getTime());
}
Он работает, но неэффективен при большом количестве данных.
Есть и другие варианты:
Я мог бы изменить дизайн своего класса сохранения, используя @PostLoad
, чтобы создать java.util . Дата от сохраненной даты после того, как я ее извлек.
Интересно, не могу ли я получить результат с помощью ClassTransformer
?
Вы когда-нибудь сталкивались с этой проблемой? Что делаю не правильно? Как лучше всего решить эту проблему?