【Hibernate學習】 —— 抓取策略(註解方式)

來源:互聯網
上載者:User

標籤:rac   lan   操作記錄   name   定義   get   not   關聯   顯示   

  當應用程式須要在關聯關係間進行導航的時候。hibernate怎樣擷取關聯對象的策略。

抓取策略的方式:

         FetchType.LAZY:懶載入。載入一個實體時。定義懶載入的屬性不會立即從資料庫中載入。

         FetchType.EAGER:急載入,載入一個實體時,定義急載入的屬性會馬上從資料庫中載入。

 

         在項目中的體現。我這裡有兩個實體。一個放基礎資料的實體。還有一個是放操作記錄的實體。

這兩個實體的關係是一對一關聯性,因此要把基礎資料中的主鍵放在操作記錄中作為外鍵。查詢的時候查詢操作記錄表順便把基礎資料表相關資訊帶出來:

 

這裡用的是註解的方式:

private Company company;@OneToOne(fetch=FetchType.EAGER)@JoinColumn(name="company_id")publicCompany getCompany() {returncompany;}publicvoid setCompany(Company company) {this.company= company;}

抓取策略的體現:fetch=FetchType.EAGER,這裡我們查詢後要立刻顯示出來,故選用了急載入。

 

這裡遇到了一個問題:

Could not determinetype for: com.tgb.xyb.entity.Company, at table: OperateRecord, for columns:[org.hibernate.mapping.Column(company)]

解決方式:註解放在get方法上面(註:原來把註解放在了方法上)

         是由於get方法是外部擷取類內部屬性的方法。所以凡是須要擷取屬性或者對象的都是在get方法上聲明的。

比如Spring的依賴注入,也是從get方法去注入。

 

        如今用了抓取策略的優點是。我們僅僅須要把這個策略加上,那麼對應的實體就會關聯上。我們就不須要去寫對應的HQL語句去關聯或者是建立一個實體把這兩個實體關聯起來。

【Hibernate學習】 —— 抓取策略(註解方式)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.