java扩展Hibernate注解支持java8新时间类型_Java教程-查字典教程网
java扩展Hibernate注解支持java8新时间类型
java扩展Hibernate注解支持java8新时间类型
发布时间:2016-12-28 来源:查字典编辑
摘要:扩展Hibernate注解@CreationTimestamp,@UpdateTimestamp支持Java8新的时间类型Hibernate...

扩展Hibernate注解@CreationTimestamp,@UpdateTimestamp支持Java8新的时间类型

Hibernate version: 4.3.5.Final

复制代码 代码如下:

package com.hibernate.annotation;

import org.hibernate.HibernateException;

import org.hibernate.tuple.AnnotationValueGeneration;

import org.hibernate.tuple.ValueGenerator;

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;

/**

* Created with IntelliJ IDEA.

* User: ZhongGang

* Date: 14-4-16

* Time: 上午11:40

* <p/>

* 支持Java8新的时间包

*

* @see java.time.LocalDateTime

* @see java.time.LocalDate

* @see java.time.LocalTime

*/

public abstract class AbstractTimeGeneration<A extends Annotation> implements AnnotationValueGeneration<A> {

protected ValueGenerator<?> generator;

@Override

public void initialize(A annotation, Class<?> propertyType) {

if (LocalDateTime.class.isAssignableFrom(propertyType)) {

generator = (session, owner) -> LocalDateTime.now();

} else if (LocalDate.class.isAssignableFrom(propertyType)) {

generator = (session, owner) -> 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 calendar = Calendar.getInstance();

calendar.setTime(new Date());

return calendar;

};

} else {

throw new HibernateException("Unsupported property type for generator annotation " + annotation.getClass().getSimpleName());

}

}

@Override

public ValueGenerator<?> getValueGenerator() {

return generator;

}

@Override

public boolean referenceColumnInSql() {

return false;

}

@Override

public String getDatabaseGeneratedReferencedColumnValue() {

return null;

}

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Java学习
    热门Java学习
    编程开发子分类