Anotação estendida de hibernato @creationtimestamp, @updatetimestamp suporta novos tipos de tempo em java8
Versão de hibernato: 4.3.5.Final
A cópia do código é a seguinte:
pacote com.hibernate.annotation;
importar org.hibernate.hibernateException;
importar org.hibernate.tuple.annotationValueGegeNeation;
importar org.hibernate.tuple.valueGenerator;
importar java.lang.annotation.annotation;
importar java.sql.time;
importar java.sql.timestamp;
importar java.time.localdate;
importar java.time.localdateTime;
importar java.time.localtime;
importar java.util.calendar;
importar java.util.date;
/**
* Criado com Intellij Idea.
* Usuário: Zhonggang
* Data: 14-4-16
* Tempo: 11:40
* <p/>
* Apoie novos pacotes de tempo para Java 8
*
* @see java.time.localdateTime
* @see java.time.localdate
* @see java.time.localtime
*/
Classe de abstração pública ResumoTimeGeneation <a estende Anotação> implementa AnoTationValueGeneation <a> {
gerador de valor protegido <?>;
@Override
public void Initialize (uma anotação, classe <?> PropertyType) {
if (localDateTime.class.isassignablefrom (PropertyType)) {
gerador = (sessão, proprietário) -> localDateTime.now ();
} else if (localdate.class.isassignablefrom (PropertyType)) {
gerador = (sessão, proprietário) -> localDate.now ();
} else if (localtime.class.isassignablefrom (PropertyType)) {
gerador = (sessão, proprietário) -> localTime.now ();
} else if (java.sql.date.class.isassignablefrom (PropertyType)) {
gerador = (sessão, proprietário) -> new java.sql.date (new date (). gettime ());
} else if (time.class.isassignablefrom (PropertyType)) {
gerador = (sessão, proprietário) -> new Time (new Date (). getTime ());
} else if (timestamp.class.isassignablefrom (PropertyType)) {
gerador = (sessão, proprietário) -> novo timestamp (new Date (). gettime ());
} else if (date.class.isassignablefrom (PropertyType)) {
gerador = (sessão, proprietário) -> new Date ();
} else if (calendar.class.isassignablefrom (PropertyType)) {
gerador = (sessão, proprietário) -> {
Calendário calendário = calendário.getInstance ();
calendário.setTime (new Date ());
calendário de retorno;
};
} outro {
lançar nova hibernateException ("Tipo de propriedade não suportado para anotação geradora" + anotação.getclass (). getSImpleName ());
}
}
@Override
public valueGenerator <?> getValueGenerator () {
gerador de retorno;
}
@Override
public boolean referenceColumninsql () {
retornar falso;
}
@Override
public string getDatabaseGeneratedReferencedColumnValue () {
retornar nulo;
}
}