2009-11-02 180 views
0

我有了實體B的外鍵的實體答:Hibernate外鍵映射?

entity A --> id, entity_a_name, foreign_key_entity_B 

當我打電話

return session.createCriteria(EntityA.class).list(); 

我得到entityB的財產實體A內爲好。我如何使它延遲加載,所以它不會加載enityB如果不需要?

回答

1

從描述中不清楚你說的是什麼類型的關係,但如果是多對一或一對一,事情並不那麼簡單。如果A.entityB爲空(非可選),那麼Hibernate將被迫加載關係以查看屬性是否爲空。只有將關係標記爲非可選(在這種情況下,休眠假定它不爲空,否則它是錯誤的),是否可以使其加載延遲?

1
  • @LazyCollection:定義了@ManyToMany 和@OneToMany協會lazyness選項。 LazyCollectionOption可以TRUE (集合是懶惰,會 時,其狀態被訪問加載), EXTRA(集合是懶惰 和所有的操作會盡量 避免集合裝載,這 是鉅額特別有用 集合時加載所有 元件是不必要的)和FALSE (協會不懶惰)

  • @抓取:定義用於加載 關聯的抓取策略。 FetchMode可以SELECT (一個選擇時觸發 協會需要加載), 子查詢(僅適用於 集合,使用子查詢 策略 - 請參閱 Hibernate參考文檔的 更多信息)或加入(在加載所有者實體時使用 SQL JOIN加載關聯 )。 JOIN 將覆蓋任何惰性屬性(通過JOIN加載 策略不能延遲的作爲 協調)。