@generatedvalue
存在的意義主要就是為乙個實體生成乙個唯一標識的主鍵、@generatedvalue提供了主鍵的生成策略。註解有兩個屬性,分別是strategy和generator。
generator屬性的值是乙個字串,預設為"",其宣告了主鍵生成器的名稱(對應於同名的主鍵生成器@sequencegenerator和@tablegenerator)。
strategy屬性:提供四種值:
-auto主鍵由程式控制, 是預設選項 ,不設定就是這個
-identity 主鍵由資料庫生成, 採用資料庫自增長, oracle不支援這種方式
-sequence 通過資料庫的序列產生主鍵, mysql 不支援
-table 提供特定的資料庫產生主鍵, 該方式更有利於資料庫的移植
@column屬性詳解:
name
定義了被標註欄位在資料庫表中所對應欄位的名稱;
unique
表示該欄位是否為唯一標識,預設為false。如果表中有乙個字段需要唯一標識,則既可以使用該標記,也可以使用@table標記中的@uniqueconstraint。
nullable
表示該欄位是否可以為null值,預設為true。
insertable
表示在使用「insert」指令碼插入資料時,是否需要插入該字段的值。
updatable
表示在使用「update」指令碼插入資料時,是否需要更新該字段的值。insertable和updatable屬性一般多用於唯讀的屬性,例如主鍵和外來鍵等。這些欄位的值通常是自動生成的。
columndefinition(大多數情況,幾乎不用)
表示建立表時,該欄位建立的sql語句,一般用於通過entity生成表定義時使用。(也就是說,如果db中表已經建好,該屬性沒有必要使用。)
table
表示當對映多個表時,指定表的表中的字段。預設值為主表的表名。
length
表示欄位的長度,當字段的型別為varchar時,該屬性才有效,預設為255個字元。
precision和scale
precision屬性和scale屬性表示精度,當欄位型別為double時,precision表示數值的總長度,scale表示小數點所佔的位數。
hibernate 多表關聯@manytoone
屬性:@manytoone
(fetch=fetchtype.lazy,cascade=cascadetype.all,optional=true)//多個使用者對應乙個角色
@joincolumn
(name="roleid",insertable=false,updatable=false)//關聯字段,使用者外來鍵user.roleid--角色外來鍵role.id
private role roles;
cascade:
預設值:cascadetype 的空陣列。
預設情況下,jpa 不會將任何持續性操作層疊到關聯的目標。
如果希望某些或所有持續性操作層疊到關聯的目標,請將 cascade 設定為乙個或多個 cascadetype 例項,其中包括:
· all — 針對擁有實體執行的任何持續性操作均層疊到關聯的目標。
· merge — 如果合併了擁有實體,則將 merge 層疊到關聯的目標。
· persist — 如果持久儲存擁有實體,則將 persist 層疊到關聯的目標。
· refresh — 如果重新整理了擁有實體,則 refresh 為關聯的層疊目標。
· remove — 如果刪除了擁有實體,則還刪除關聯的目標。
fetch
預設值:fetchtype.eager。
預設情況下,jpa 持續性提供程式使用獲取型別 eager:這將要求持續性提供程式執行時必須迫切獲取資料。
如果這不適合於應用程式或特定的持久字段,請將 fetch 設定為 fetchtype.lazy:這將提示持續性提供程式在首次訪問資料(如果可以)時應不急於獲取資料。
optional
預設值:true。
預設情況下,jpa 持續性提供程式假設所有(非基元)欄位和屬性的值可以為空。
如果這並不適合於您的應用程式,請將 optional 設定為 false。
targetentity
預設值:jpa 持續性提供程式從被引用的物件型別推斷出關聯的目標實體
如果持續性提供程式無法推斷出目標實體的型別,則將關聯擁有方上的 targetentity 元素設定為作為關係目標的實體的 class。
@jsonignoreproperties與@jsonignore基本使用
問題由來:
springboot專案中定義了很多類,我們在rest返回中直接返回或者在返回物件中使用這些類,spring已經使用jackson自動幫我們完成這些的to json。但是有時候自動轉的json內容太多,或者格式不符合我們的期望,因此需要調整類的to json過程,或者說希望自定義類的json過程。
解決辦法:
使用@jsonignoreproperties、@jsonignore、@jsonformat。
@jsonignore註解用來忽略某些字段,可以用在變數或者getter方法上,用在setter方法時,和變數效果一樣。這個註解一般用在我們要忽略的字段上。
@jsonignoreproperties(ignoreunknown = true),將這個註解寫在類上之後,就會忽略類中不存在的字段。這個註解還可以指定要忽略的字段,例如@jsonignoreproperties()
@jsonformat可以幫我們完成格式轉換。例如對於date型別字段,如果不適用jsonformat預設在rest返回的是long,如果我們使用@jsonformat(timezone = 「gmt+8」, pattern = 「yyyy-mm-dd hh:mm:ss」),就返回"2018-11-16 22:58:15"
零散知識收集
success在介面com.opensymphony.xwork2.action中定義,另外同時定義的還有error,input,login,none。值得一提的是struts 2.0中的result不僅僅是struts 1.x中forward的別名,它可以實現除forward外的很激動人心的功能,...
零散的感想
全職英語學習已經兩周多了,馬上就三周了。這段時間的學習讓我變的很 懶 表現 計算機的學習由開始的每天學一點,發展到一點不學,到現在的不想看。靜下心來想想,這都是自己的問題,時間安排的不合理。應該每天都拿出點時間,乙個番茄的時間來溫習一下計算機,或者就不會太生疏,現在也不會糾結。乙個人不可能就幹一件事...
C 零散知識
全域性變數的初始化時機 c 是在編譯期初始化,c 是在程式執行時,main 函式之前初始化.不使用中間變數實現 strlen int mystrlen const char str c 語言函式引數入棧順序為從右至左。具體原因為 c 方式引數入棧順序 從右至左 的好處就是可以動態變化引數個數。通過棧...