欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java擴(kuò)展Hibernate注解支持java8新時(shí)間類型

 更新時(shí)間:2014年04月17日 09:22:36   作者:  
這篇文章主要介紹了java擴(kuò)展Hibernate注解支持java8新時(shí)間類型,需要的朋友可以參考下

擴(kuò)展Hibernate注解@CreationTimestamp,@UpdateTimestamp支持Java8新的時(shí)間類型
Hibernate version: 4.3.5.Final

復(fù)制代碼 代碼如下:

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新的時(shí)間包
 *
 * @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;
    }
}

相關(guān)文章

  • springboot開(kāi)發(fā)flowable定時(shí)任務(wù)問(wèn)題

    springboot開(kāi)發(fā)flowable定時(shí)任務(wù)問(wèn)題

    這篇文章主要介紹了springboot開(kāi)發(fā)flowable定時(shí)任務(wù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java虛擬機(jī)JVM棧溢出的問(wèn)題解決

    Java虛擬機(jī)JVM棧溢出的問(wèn)題解決

    Java虛擬機(jī)棧溢出是指在Java程序中,當(dāng)線程調(diào)用的方法層級(jí)過(guò)深,導(dǎo)致??臻g溢出的情況,本文就詳細(xì)的介紹了下產(chǎn)生的原因以及優(yōu)化,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • Linux下Hadoop?2.7.3?安裝搭建過(guò)程

    Linux下Hadoop?2.7.3?安裝搭建過(guò)程

    Hadoop實(shí)現(xiàn)了一個(gè)分布式文件系統(tǒng)(Hadoop?Distributed?File?System),簡(jiǎn)稱HDFS,這篇文章給大家介紹Linux下Hadoop?2.7.3?安裝搭建過(guò)程,感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • Java、C++中子類對(duì)父類函數(shù)覆蓋的可訪問(wèn)性縮小的區(qū)別介紹

    Java、C++中子類對(duì)父類函數(shù)覆蓋的可訪問(wèn)性縮小的區(qū)別介紹

    這篇文章主要給大家介紹了關(guān)于Java、C++中子類對(duì)父類函數(shù)覆蓋的可訪問(wèn)性縮小的區(qū)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • 使用Maven打包時(shí)包含資源文件和源碼到j(luò)ar的方法

    使用Maven打包時(shí)包含資源文件和源碼到j(luò)ar的方法

    這篇文章主要介紹了使用Maven打包時(shí)包含資源文件和源碼到j(luò)ar的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • SpringBoot中的Aop用法示例詳解

    SpringBoot中的Aop用法示例詳解

    這篇文章主要介紹了SpringBoot中的Aop用法,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • Spring中使用Hystrix實(shí)現(xiàn)熔斷詳解

    Spring中使用Hystrix實(shí)現(xiàn)熔斷詳解

    這篇文章主要介紹了Java中使用Hystrix實(shí)現(xiàn)熔斷詳解,對(duì)于第一個(gè)問(wèn)題,查看hystrix源碼可以看到,如果有緩存配置是優(yōu)先使用的緩存的,因此如果配置更新,必須要更新緩存,不能使用Hystrix.reset()方法來(lái)更新緩存,需要的朋友可以參考下
    2023-12-12
  • Spring.Net控制反轉(zhuǎn)IoC入門使用

    Spring.Net控制反轉(zhuǎn)IoC入門使用

    這篇文章主要為大家詳細(xì)介紹了Spring.Net控制反轉(zhuǎn)IoC入門使用的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 深入了解Java核心類庫(kù)--Math類

    深入了解Java核心類庫(kù)--Math類

    本文是小編最新給大家整理的關(guān)于Java中Math類常用方法的知識(shí),通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧,
    2021-07-07
  • 使用Spring Boot快速構(gòu)建基于SQLite數(shù)據(jù)源的應(yīng)用

    使用Spring Boot快速構(gòu)建基于SQLite數(shù)據(jù)源的應(yīng)用

    為了提供一個(gè)單包易部署的服務(wù)器應(yīng)用,考慮使用Spring Boot,因?yàn)槠浼闪薃pache Tomcat,易于運(yùn)行,免去絕大部分了服務(wù)器配置的步驟
    2017-08-08

最新評(píng)論