1. 程式人生 > >Hibernate 和 JPA 註解方式自定義ID生成器

Hibernate 和 JPA 註解方式自定義ID生成器

/**
 * Test.java
 * 實體類定義和配置
 */
package com.saving.ecm.resource.entity;


import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;


import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;



@XmlRootElement
@Entity
@Table(name = "test")
public class Test {
	@Id
	@GeneratedValue(generator = "idGenerator")
	@GenericGenerator(name = "idGenerator", strategy = "com.saving.ecm.resource.entity.IdGenerator",
	parameters = { @Parameter(name = "dataCenterID", value = "20") ,@Parameter(name = "idLength", value = "10")})
	private String code;


	@Column(name = "name", nullable = false, columnDefinition = "varchar(48) default '' comment '名字'")
	private String name;


	public String getCode() {
		return code;
	}


	public void setCode(String code) {
		this.code = code;
	}


	public String getName() {
		return name;
	}


	public void setName(String name) {
		this.name = name;
	}




}
模擬自定義ID生成器

package com.saving.ecm.resource.entity;


import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;


import org.hibernate.dialect.Dialect;
import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.id.AbstractUUIDGenerator;
import org.hibernate.id.Configurable;
import org.hibernate.type.Type;



public class IdGenerator implements Configurable,IdentifierGenerator {


	public String dataCenterID;
	public String idLength;


	public void configure(Type type, Properties params, Dialect d) {
		this.dataCenterID = params.getProperty("dataCenterID");
		this.idLength = params.getProperty("idLength");
	}


	public Serializable generate(SessionImplementor session, Object obj) {
		return dataCenterID + idLength;
	}


}


相關推薦

Hibernate JPA 註解方式定義ID生成器

/** * Test.java * 實體類定義和配置 */ package com.saving.ecm.resource.entity; import javax.persistence.Column; import javax.persistence.Enti

hibernatejpa註解關聯總結

用hibernate和jpa annotation 大概一年多了,今天閒來無事,對他們關聯關係元資料寫法做一個總結。   1.一對一主鍵關聯   這個在實際專案中用的比較少,大部分是通過用外來鍵做關聯的,這裡用使用者和手機號舉個例子,使用者和手機號是一對一的關係,

hibernate validation內置註解定義註解

ons private from decimal 最重要的 con name cts mva 1 Bean Validation 中內置的 constraint 2 @Null 被註釋的元素必須為 null 3 @NotNull

Java註解定義使用

小夥伴們。今天我們來說說註解、標誌@ 。針對java不同版本來說,註解的出現是在jdk1.5 但是在jdk1.5版本使用註解必須繼續類的方法的重寫,不能用於實現的介面中的方法實現,在jdk1.6環境下對於繼續和實現都是用。 jdk1.5版本內建了三種標準的註解: @Ove

使用註解風格學習HibernateJPA的主鍵生成策略

                      主鍵是關係資料庫中的一個基本概念,它用來保證記錄的唯一性。簡單來說,就是同一張資料庫表中,不允許存在多條相同主鍵的記錄。主鍵生成策略,就是當向資料庫表中插入記錄的時候,這個記錄的主鍵該如何生成。絕大部分情況下,主鍵都是沒有業務含義的,所以開發者不會、也不需要,顯示地

SpringBoot第四講擴充套件封裝Spring Data JPA(一)_定義Repository建立自己的BaseRepository

這一講主要介紹Spring Data JPA的封裝。和設計相關的東西都是仁者見仁,智者見智的事情,如果你有更好的封裝方案可以和我交流,互相學習。這一講會講如下一些內容 - 擴充套件Spring Data JPA實現自己的一些特殊方法 - 建立一個自己的Bas

Spring java 反射及定義註解的問題解決!!

我想做一個將  使用者操作記錄儲存到資料庫的功能,利用java 的反射和自定義annotation 來實現,具體程式碼如下: 自定義annotation  類: package com.util; import java.lang.annotation.Documented;

PHP中call user func()call_user_func_array()調用定義函數小結

echo 函數名 sta 小結 blog 如果 use ati 參數 call_user_func() 和 call_user_func_array(),通過傳入字符串函數,可以調用自定義函數,並且支持引用,都允許用戶調用自定義函數並傳入一定的參數: 1、mixed cal

python---基礎知識回顧(十)進程線程(定義線程池,上下文管理器協程的使用)

elf () self. 數據類型 大小 get 基礎數據類型 __init__ 進行 前戲: 在進行自定義線程池前,先了解下Queue隊列 隊列中可以存放基礎數據類型,也可以存放類,對象等特殊數據類型 from queue import Queue class T:

事件監聽window.history以及定義創建事件

lac 瀏覽器 捕獲 tps details push AD his listener 1.事件監聽window.addEventListener方法: Window.addEventListener(event, function, useCapture); useC

HibernateJPA

Mybatis(ibatis)半自動化orm框架,需要手寫sql語句 Hibernate  全自動化orm框架,不需要寫sql語句 Hibernate底層也是jdbc sun公司制定JPA規範(Java Persistence API)  java持久化規範   內部是介面和抽象類組成   Hibe

SpringData JPA 詳解(定義查詢、分頁、事務控制)

簡介 SpringData JPA是 JPA的一種實現,極大的簡化了JPA的開發,原始JPA的開發,需要建立實體管理工廠,使用實體管理器定義各種查詢進行CRUD操作,而SpringData JPA只需要通過核心介面Repository和它的子類就能很方便的操作資料庫。

springboot2.0中Spring MVC的JSR具體體現Hibernate Validator,Spring Boot定義過濾器Filter

宣告,基於springboot 上一篇博文 ,地址: https://blog.csdn.net/weixin_42323802/article/details/83964225 在spring中,輸入驗證提供2種方式,一種基於spring框架,一種基於Hibernate Valid

Spring Data JPA 工作原理 : 定義JpaRespository介面卻不用提供實現

概述 當我們使用 Spring Data JPA 的時候,典型的用法是這樣的 : 將 spring-data-jpa 包,資料庫驅動包等新增為專案依賴; 配置檔案定義相應的資料來源; 為應用添加註解@EnableJpaRepositories; 定義業務

Hibernate MyBatis 實現方式的區別

Hibernate 和 MyBatis 都是持久層框架,都會涉及資料庫,所以先定義一個數據庫表,先從程式碼編寫角度對比兩者。 新建一個 POJO 類,和表的欄位對應起來。 package com.learn.chapter1.pojo; implements java.io.Serial

@Constraint註解配合定義驗證型別註解的開發

前言:雖然現在有很多很有用的驗證註解,如@not null,@not blank,@not [email protected]等等。但是我們可能有時候根據專案的拓展這些驗證註解不夠用,那怎麼辦,解決的辦法就是自定義驗證註解   1,@Constraint註解 說到自定

Hexo 安裝替換主題、定義部落格主題

Hexo 安裝和替換主題、自定義部落格主題 如果還沒有搭建好部落格環境,請參考: 使用 Hexo + Github 搭建自己的部落格(圖文教程) Hexo 搭建好後,預設的主題叫 landscape,在 Themes 目錄下可以找到它。 如果你不想自己的部落格就這麼不美觀的話,那

jQuery拼接json字串json陣列(定義Jsonp)

/** myJsonp:json陣列 myJsonp1:沒有複選框時用的方法,json字串 myJsonp2:有複選框時用的方法,json字串 myJsonp3:有複選框時和有編輯器時用的方法,json字串 */ (function ($) { //序列化和返序列化

LaravelThinkPHP個人常用定義函式庫

1. 字串轉換為陣列(主要用於把分隔符調整到第二個引數) /** * [os_Str2arr 字串轉換為陣列] * 主要用於把分隔符調整到第二個引數 * @param [type] $str [要分割的字串] * @param string $glue [分割

SpringBoot(10) Servlet3.0的註解定義原生Servlet、定義原生Listener

一、自定義原生Servlet 1、啟動類裡面增加註解 @ServletComponentScan 2、Servlet上添加註解  @WebServlet(name = "userServlet",urlPatterns = "/v1/api/test/customs") 1 @WebServlet(nam