jpa知識點

@NotFound(action=NotFoundAction.IGNORE)html

使用hibernate 
註解配置實體類的關聯關係,在many-to-one,one-to-one關聯中,一邊引用自另外一邊的屬性,若是屬性值爲某某的數據在數據庫不存在了,hibernate默認會拋出異常。解決此問題,加上以下註解就能夠了:
@NotFound(action=NotFoundAction.IGNORE),意思是找不到引用的外鍵數據時忽略,NotFound默認是exception

-------------------------------------------------------------------
cascade = CascadeType.REFRESH,cascade=CascadeType.ALL

cascade表示級聯操做  java

 

Cascade 級聯操做 
CascadeType. PERSIST 級聯持久化 ( 保存 ) 操做 
CascadeType. MERGE 級聯更新 ( 合併 ) 操做 
CascadeType. REFRESH 級聯刷新操做,只會查詢獲取操做 
CascadeType. REMOVE 級聯刪除操做 
CascadeType. ALL 級聯以上所有操做 
Fetch 抓取是否延遲加載,默認狀況一的方爲當即加載,多的一方爲延遲加載 
mappedBy 關係維護 
mappedBy= "order" 表示在 OrderItem 類中的 order 屬性來維護關係

 



綜上:大多數狀況用CascadeType.MERGE就能達到級聯跟新又不報錯,用CascadeType.ALL時要斟酌下CascadeType.REMOVE數據庫

@Fetch:app

定義了加載關聯關係的獲取策略. FetchMode 能夠是spa

SELECT (在須要加載關聯的時候觸發select操做),     SUBSELECT(只對集合有效,使用了子查詢策略,詳情參考Hibernate參考文檔).net

JOIN (在加載主實體(owner entity)的時候使用SQL JOIN來加載關聯關係).hibernate

JOIN 將覆寫任何延遲屬性 (經過 JOIN策略加載的關聯將再也不具備延遲性).code

相關文章
相關標籤/搜索