Hibernate jpa獲取自增主鍵Id

2021-09-24 16:58:32 字數 725 閱讀 4193

專案中使用spring +hibernate+jpa。有場景需要儲存實體後獲取實體的主鍵進行下一步的操作。

經過查詢資料以及參考通過修改主鍵註解的方式。即

@documentid

@id@generatedvalue(strategy = generationtype.identity)

private long id;

實際就是strategy 的修改,查詢原始碼:

public enum generationtype

一共存在4種型別

–auto: 主鍵由程式控制,是預設選項,不設定即此項

–identity:主鍵由資料庫自動生成,即採用資料庫id自增長的方式,oracle不支援這種方式

–sequence:通過資料庫的序列產生主鍵,通過@sequencegenerator 註解指定序列名,mysql不支援這種方式

–table:通過特定的資料庫表產生主鍵,使用該策略可以使應用更易於資料庫移植

在identity時,實際呼叫的儲存完成後直接取實體即可,例如

user usr=new user ();

usr.setname("tony");

userdao.persist(usr);

sysout(usr.getid());

MySQL獲取自增序列

因為業務要求,需要在mysql資料庫中,獲取下乙個自增主鍵的值。原先採用的方法是 select auto increment from information schema.tables where table schema 資料庫名稱 and table name 表名稱 limit 1但是這樣寫...

獲取自增主鍵id

最近在看隊友的 發現個問題,後覺是自己out了。在做關聯表插入操作時,需要根據主表的 主鍵id作詳情表的屬性值,最笨的方法就是,先插入主表,然後通過查詢返回剛剛插入的 主鍵id,繼續 新增詳情表資料。下面介紹一下我從隊友 中get的新技能 方案 在mybatis的配置檔案中,有個叫keyproper...

ORACLE to char 函式獲取自然週數

最簡單的是使用 formatted on 2009 12 02 16 01 formatter plus v4.8.8 select to char to date 2009 12 02 yyyy mm dd ww from dual 不過to char 函式在計算一年中第幾周是從該年的1月1日開始...