spring boot hibernate常用註解

2021-09-01 16:01:28 字數 4336 閱讀 7300

建立表

//不宣告entity表無法建立

@entity

@table(name = "表名")

@dynamicinsert

@dynamicupdate

//解決hibernate json 延時載入,接受引數,字段無效問題

@jsonignoreproperties(value=)

主鍵

uuid oracle使用

@id

@generatedvalue(generator = "uuid2")

@genericgenerator(name = "uuid2", strategy = "uuid2")

自增 mysql使用

@id

@generatedvalue(strategy = generationtype.identity)

@column(name = "列名",unique = true,nullable = false)

不會生成資料庫列

@transient
查詢預設排序

@orderby(value = "列名 asc")
列舉型別(資料庫儲存序列,或字元)

@enumerated(enumtype.ordinal)//序列自動不需要配置

@enumerated(enumtype.string)//例如***.man 儲存man

自定義資料型別

@column(name = "列名",columndefinition ="資料庫型別")
一對一關係

單向關係

@onetoone(cascade =,fetch = fetchtype.lazy)

@joincolumn(name="外來鍵列名")

雙向關係

cascadetype.persist, cascadetype.merge}, fetch = fetchtype.lazy)

多對一關係

manytoone(多對一)單向:不產生中間表

@manytoone(cascade = ,

fetch = fetchtype.lazy)

@joincolumn(name = "外來鍵列名")

onetomany(一對多)單向:會產生中間表

onetomany

@onetomany(cascade = 

,fetch = fetchtype.lazy)

@jointable(name = "中間表名", joincolumns = @joincolumn(name = "當前類id"),

inversejoincolumns = @joincolumn(name = "集合型別id"))

多對多關係

多對多由一方維護關係即可

@onetomany(cascade = 

,fetch = fetchtype.lazy)

@jointable(name = "中間表名", joincolumns = @joincolumn(name = "當前類id"),

inversejoincolumns = @joincolumn(name = "集合型別id"))

//joincolums為本表對映id  inversejoincolumns為另一張表

雙向關係

, fetch = fetchtype.lazy)

對映為另一方的關係

懶載入死迴圈

@jsonignoreproperties不同於@jsonignore在於,你可以註明該變數中的哪個屬相不被序列化。從而允許在雙向訪問上都不存在環或是缺失。

@jsonignoreproperties("另一方物件或集合名稱")
cascadetype.remove(級聯刪除操作)

cascade remove operation,級聯刪除操作。刪除當前實體時,與它有對映關係的實體也會跟著被刪除。

cascadetype.merge (級聯更新操作)

cascade merge operation  當student中的資料改變,會相應地更新course中的資料。

cascadetype.detach(級聯脫管/游離操作)

cascade detach operation,級聯脫管/游離操作。

如果你要刪除乙個實體,但是它有外來鍵無法刪除,你就需要這個級聯許可權了。它會撤銷所有關的外來鍵關聯。

cascadetype.refresh  (級聯重新整理操作)

cascade refresh operation,級聯重新整理操作。

假設場景 有乙個訂單,訂單裡面關聯了許多商品,這個訂單可以被很多人操作,那麼這個時候a對此訂單和關聯的商品進行了修改,與此同時, b也進行了相同的操作,但是b先一步比a儲存了資料,那麼當a儲存資料的時候,就需要先重新整理訂單資訊及關聯的商品資訊後,再將訂單及商品儲存。

cascadetype.all

cascade all operations,清晰明確,擁有以上所有級聯操作許可權。

父類

@entity

@table(name = "表名")

@inheritance(strategy = inheritancetype.single_table)

@discriminatorcolumn(name = "區分子類型別(列)")

例如:@discriminatorcolumn(name = "type") 本表會多出type列

子類

繼承父類

@entity

@discriminatorvalue("子表名稱") 注:對應 discriminatorcolumn 列是它的值

例如:@discriminatorvalue("test") 資料庫顯示為type列等於test

父類

@entity

@table(name = "表名")

@inheritance(strategy = inheritancetype.joined)

子類

繼承父類 

@entity

@table(name="表名")

Entity framework 常用資料註解

命名空間 system.componentmodel.dataannotations key該列為主鍵 databasegenerated databasegeneratedoption.none 指定該列不從資料庫中生成 required required errormessage 不能為空 該列...

Doxygen Doxygen簡介和常用注釋

exception 對乙個異常物件進行注釋。warning 一些需要注意的事情 todo 對將要做的事情進行注釋,鏈結到所有todo 彙總的todo 列表 bug 缺陷,鏈結到所有缺陷彙總的缺陷列表 see 一段包含其他部分引用的注釋,中間包含對其他 項的名稱,自動產生對其的引用鏈結。relates...

Swagger 三 Swagger中常用的注釋

api 用在請求的類上,表示對類的說明 tags 說明該類的作用,可以在ui介面上看到的註解 description 描述 比如 api tags 第乙個controller層 description 用來測試資料 2.apioperation 用在請求的方法上,說明方法的用途 作用 value 說...