手机
当前位置:查字典教程网 >编程开发 >Java >java扩展Hibernate注解支持java8新时间类型
java扩展Hibernate注解支持java8新时间类型
摘要:扩展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扩展Hibernate注解支持java8新时间类型】相关文章:

java IO流文件的读写具体实例

java 全角半角字符转换的方法实例

java的引用类型的详细介绍

java教程之java注解annotation使用方法

java时间相关处理小结

java使用回溯法求解数独示例

解析Hibernate + MySQL中文乱码问题

java读取大文件简单实例

java Hibernate 一对多自身关联问题

java自定义注解接口实现方案

精品推荐
分类导航