JPA中nativeQuery true有啥用

2021-10-21 17:24:10 字數 1335 閱讀 8143

nativequery = true時,是可以執行原生sql語句,所謂原生sql,也就是說這段sql拷貝到資料庫中,然後把引數值給一下就能執行了,比如:

@query

(value =

"select * from product_rel where audit_id=?1 and process_object=0 "

,nativequery =

true

)list

findallbyproductauditid

(integer id)

;

這個時候,把select * from product_rel where audit_id=?1 and process_object=0拷貝到資料庫中,並給audit_id賦乙個值,那麼這段sql就可以執行。其中資料庫表在資料庫中的表名就是product_rel,字段audit_id在資料庫中也是真實存在的欄位名。

沒有nativequery = true時,就不是原生sql,而其中的select * from ******也不是資料庫對應的真正的表名,而是對應的實體類名,並且sql中的欄位名也不是資料庫中真正的欄位名,而是實體的欄位名。例如:

@query

("select ratio from mdmratio ratio where enablednum=1 "

)list

findbymdmutilthreeprojection()

;@entity

@table

(name=

"mdm_ratio"

)public

class

mdmratio

implements

serializale

此中,select ratio from mdmratio ratio中的mdmratio為實體名,不是真正的資料庫表名,真正的資料庫表名是mdm_ratio(如上圖@table裡面寫的那樣,mdmratio實體對應的資料庫表名是mdm_ratio。但不一定都是這樣的,可能你的mdmratio實體對應的資料庫表是mdm_ratio_abc,但whatever,隨便是什麼,只要它真實存在就ok),而查詢條件中的enablednum在資料庫中真正的名字是enabled_num

JPA中 Query的使用

在使用 query中,需要使用以下幾個註解 transactional 註解用於提交事務,若沒有帶上這句,會報事務異常提示 modifying clearautomatically true 自動清除實體裡儲存的資料 query value update t user set user title ...

JPA中的主鍵生成策略

通過annotation 註解 來對映hibernate實體的,基於annotation的hibernate主鍵標識為 id,其生成規則由 generatedvalue設定的.這裡的 id和 generatedvalue都是jpa的標準用法。jpa提供的四種標準用法為table,sequence,i...

jpa中的個種關係

泛型 繼承關係 實現組合 聚合關聯 依賴組合,聚合,關聯 單向一對多,單向多對一,onetomany fetch fetchtype.lazy joincolumn name department id 雙向一對多 多對一 兩邊都要配置,但是我們為了提高效能,我們會在一遍選擇放棄維權 onetoma...