Как заставить Hibernate возвращать даты как java.util.Date вместо Timestamp?

ситуация:

У меня есть постоянный класс с переменной типа java.util.Date:

import java.util.Date;

@Entity
@Table(name = "prd_period")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Period extends ManagedEntity implements Interval {

   @Column(name = "startdate_", nullable = false)
   private Date startDate;

}

Соответствующая таблица в БД:

CREATE TABLE 'prd_period' (
  'id_' bigint(20) NOT NULL AUTO_INCREMENT,
 ...
  'startdate_' datetime NOT NULL
)

Затем я сохраняю свой объект Period в БД:

Period p = new Period();
Date d = new Date();
p.setStartDate();
myDao.save(p);

После этого, если я пытаюсь извлечь свой объект из БД, он возвращается с переменной startDate типа Timestamp - и все места, где я пытаюсь использовать equals (...), возвращают false.

Вопрос: есть ли какие-либо средства, чтобы заставить Hibernate возвращать даты как объект типа java.util.Date вместо Timestamp без явного изменения каждой такой переменной (например, она должна иметь возможность просто работать, без явного изменения существующих переменных java.util. Тип даты)?

НОТА:

Я нашел ряд явных решений, где используются аннотации или модифицируется сеттер, но у меня есть много классов с переменными даты, поэтому мне нужно какое-то централизованное решение, и все, что описано ниже, недостаточно хорошо:

Использование аннотации @Type: - java.sql. Дата будет возвращена

@Column
@Type(type="date")
private Date startDate;

Использование аннотации @Temporal (TemporalType.DATE) - java.sql. Дата будет возвращена

@Temporal(TemporalType.DATE)
@Column(name=”CREATION_DATE”)
private Date startDate;

Изменяя сеттер (глубокая копия) - java.util.Date будет возвращен

public void setStartDate(Date startDate) {
    if (startDate != null) {
        this.startDate = new Date(startDate.getTime());
    } else {
        this.startDate = null;
    }
}

При создании моего собственного типа: - java.util.Date будет возвращен

Подробности приведены здесь:http://blogs.sourceallies.com/2012/02/hibernate-date-vs-timestamp/

Ответы на вопрос(7)

Ваш ответ на вопрос