extended hibernate annotation @creationtimestamp、@updatetimestampはJava8の新しい時間タイプをサポートしています
Hibernateバージョン:4.3.5.Final
コードコピーは次のとおりです。
パッケージcom.hibernate.annotation;
org.hibernate.hibernateExceptionをインポートします。
import org.hibernate.tuple.annotationValueGeneration;
Import org.hibernate.tuple.valueGenerator;
Java.lang.Annotation.Annotationをインポートします。
Java.sql.timeをインポートします。
java.sql.timestampをインポートします。
Import Java.time.localdate;
Java.Time.LocalDateTimeをインポートします。
Java.time.localtimeをインポートします。
java.util.calendarをインポートします。
Import 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
*/
パブリックアブストラクトクラスの要約時間ゲネレーション<a endocts annotation> aonnotationvaluegeneration <a> {
Protected ValueGenerator <?>ジェネレーター;
@オーバーライド
public void initialize(annotation、class <?> 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、owner) - > localtime.now();
} else if(java.sql.date.class.isassignablefrom(propertyType)){
generator =(session、owner) - > new java.sql.date(new date()。getTime());
} else if(time.class.isassignablefrom(propertyType)){
generator =(session、owner) - > new Time(new date()。getTime());
} else if(timestamp.class.isassignablefrom(propertyType)){
generator =(session、owner) - > new Timestamp(new date()。getTime());
} else if(date.class.isassignablefrom(propertyType)){
generator =(session、owner) - > new date();
} else if(calendar.class.isassignablefrom(propertyType)){
generator =(session、owner) - > {
カレンダーカレンダー= calendar.getInstance();
calendar.settime(new date());
カレンダーを返します。
};
} それ以外 {
新しいHibernateException( "Generator Annotationのサポートされていないプロパティタイプ" + annotation.getClass()。getSimplename());
}
}
@オーバーライド
public ValueGenerator <?> getValueGenerator(){
ジェネレーターを返す;
}
@オーバーライド
public boolean referencecolumninsql(){
falseを返します。
}
@オーバーライド
public string getDataBaseGeneredReedencedColumnValue(){
nullを返します。
}
}