¿Cómo obligar a Hibernate a devolver fechas como java.util.Date en lugar de Timestamp?

Situació:

Tengo una clase persistente con una variable de tipo 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;

}

Corresponding table in DB:

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

Luego guardo mi objeto Period en DB:

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

Después de eso, si estoy tratando de extraer mi objeto de la base de datos, se devuelve con la variable startDate del tipo Timestamp, y todos los lugares donde estoy tratando de usar igual (...) devuelven false.

Pregunt: ¿hay algún medio para obligar a Hibernate a devolver fechas como objeto del tipo java.util.Date en lugar de Timestamp sin modificación explícita de cada una de esas variables (por ejemplo, debe poder funcionar, sin modificación explícita de las variables existentes de java.util Tipo de fecha)

NOTA

Encontré un número de soluciones explícitas, donde se usan anotaciones o se modifica el setter, pero tengo muchas clases con variables de fecha, por lo que necesito una solución centralizada y todo lo que se describe a continuación no es lo suficientemente bueno:

Utilizando anotaciones @Type: - java.sql.Date se devolverá

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

Utilizando anotaciones @Temporal (TemporalType.DATE) - java.sql.Date se devolverá

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

Por modificador setter (copia profunda) - java.util.Date se devolverá

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

Por creación de mi propio tipo: - java.util.Date se devolverá

os detalles se dan aquí:http: //blogs.sourceallies.com/2012/02/hibernate-date-vs-timestamp

Respuestas a la pregunta(14)

Su respuesta a la pregunta