Расширенная аннотация Hibernate @creationtimestamp, @updatetimestamp поддерживает новые типы времени в Java8
Версия Hibernate: 4.3.5.final
Кода -копия выглядит следующим образом:
пакет com.hibernate.annotation;
Импорт org.hibernate.hibernateException;
Импорт org.hibernate.tuple.annotationValueGeneration;
Импорт org.hibernate.tuple.valuegenerator;
импортировать java.lang.annotation.annotation;
импортировать java.sql.time;
Импорт java.sql.timestamp;
импортировать java.time.localdate;
Импорт java.time.localdateTime;
импортировать java.time.localtime;
импортировать java.util.calendar;
импортировать java.util.date;
/**
* Создано с идеей IntelliJ.
* Пользователь: Zhonggang
* Дата: 14-4-16
* Время: 11:40
* <p/>
* Поддержите новые пакеты времени для Java 8
*
* @see java.time.localdateTime
* @see java.time.localdate
* @see java.time.localtime
*/
Общедоступный абстрактный класс AbstractMegeneration <A Extends Annotation> реализует AnnotationValueGeneration <a> {
Защищенное значение генератора <?> Генератор;
@Override
public void инициализировать (аннотация, класс <?> PropertyType) {
if (localdateTime.class.isassignablefrom (PropertyType)) {
Generator = (Session, владелец) -> localDateTime.now ();
} else if (localdate.class.isassignablefrom (PropertyType)) {
Generator = (Session, владелец) -> localdate.now ();
} else if (localtime.class.isassignablefrom (PropertyType)) {
Generator = (Session, владелец) -> localtime.now ();
} else if (java.sql.date.class.isassignablefrom (PropertyType)) {
Generator = (Session, владелец) -> new java.sql.date (new Date (). getTime ());
} else if (time.class.isassignablefrom (PropertyType)) {
Generator = (Session, владелец) -> Новое время (New Date (). getTime ());
} else if (timestamp.class.isassignablefrom (PropertyType)) {
Generator = (Session, владелец) -> Новая временная метка (New Date (). getTime ());
} else if (date.class.isassignablefrom (PropertyType)) {
Generator = (Session, владелец) -> New Date ();
} else if (calendar.class.isassignablefrom (PropertyType)) {
Generator = (Session, владелец) -> {
Календарь календарь = календарь.getinstance ();
Calendar.SetTime (New Date ());
возвратный календарь;
};
} еще {
бросить новое hibernateException («Неподдерживаемый тип свойства для аннотации генератора» + annotation.getClass (). getSiMplename ());
}
}
@Override
Public ValueGenerator <?> GetValueGenerator () {
возвратный генератор;
}
@Override
Общедоступный логический ссылки.
вернуть ложь;
}
@Override
public String getDataBaseGeneratedReferenceColumnValue () {
вернуть ноль;
}
}