Anotación de hibernación extendida @CreationTimestamp, @UpdateTimestamp admite nuevos tipos de tiempo en Java8
Versión de hibernación: 4.3.5.Final
La copia del código es la siguiente:
paquete com.Hibernate.Annotation;
importar org.hibernate.HibernateException;
importar org.hibernate.tuple.annotationValueGeneration;
importar org.hibernate.tuple.valigenerator;
import java.lang.annotation.annotation;
import java.sql.time;
import java.sql.timestamp;
import java.time.localdate;
import java.time.localdateTime;
import java.time.localtime;
import java.util.calendar;
import java.util.date;
/**
* Creado con Idea IntelliJ.
* Usuario: Zhonggang
* Fecha: 14-4-16
* Hora: 11:40 am
* <p />
* Admite nuevos paquetes de tiempo para Java 8
*
* @see java.time.localdateTime
* @see java.time.localdate
* @see java.time.localtime
*/
Public Abstract Class AbstractTimeGeneration <A extiende la anotación> Implementa la anotación ValueGeneración <a> {
ValueGenerator protegido <?> Generador;
@Anular
public void Initialize (una anotación, clase <?> PropertyType) {
if (localDateTime.class.isassignableFrom (PropertyType)) {
generador = (sesión, propietario) -> localDateTime.now ();
} else if (localDate.class.isassignableFrom (PropertyType)) {
generador = (sesión, propietario) -> localdate.now ();
} else if (localtime.class.isassignableFrom (PropertyType)) {
generador = (sesión, propietario) -> localtime.now ();
} else if (java.sql.date.class.isassignableFrom (PropertyType)) {
generador = (sesión, propietario) -> nuevo java.sql.date (nueva fecha (). gettime ());
} else if (time.class.isassignableFrom (PropertyType)) {
generador = (sesión, propietario) -> nueva hora (nueva fecha (). getTime ());
} else if (timestamp.class.isassignableFrom (PropertyType)) {
generador = (sesión, propietario) -> nueva marca de tiempo (nueva fecha (). gettime ());
} else if (date.class.isassignableFrom (PropertyType)) {
generador = (sesión, propietario) -> nueva fecha ();
} else if (calendar.class.isassignableFrom (PropertyType)) {
generador = (sesión, propietario) -> {
Calendario calendario = calendario.getInstance ();
calendario.setTime (nueva fecha ());
calendario de devolución;
};
} demás {
tirar nueva HibernateException ("Tipo de propiedad no compatible para la anotación del generador" + Annotation.getClass (). GetSimpLename ());
}
}
@Anular
Public ValueGenerator <?> getValueGenerator () {
generador de retorno;
}
@Anular
public boolean referenceColumninsql () {
devolver falso;
}
@Anular
public String getDatabaseGeneratedReferenceColumnValue () {
regresar nulo;
}
}