2011-03-17 30 views
1

我從兩個不同的部門兩個表:Hibernate的緩存負命中

客戶
ID

國家
姓名,年齡等

費率(複合縣/州的ID)


價格

在Hibernate中,我在複合外鍵(縣/州)上定義了@ManyToOne關係。我遵循這個: Hibernate Annotations

那麼,每個客戶都有一個縣/州,但並非每個縣/州對都代表了結算表。當我加載一些Customer實體時,我得到關係的EntityNotFoundException異常。根據我在這裏閱讀(與我同樣的問題):JBoss Forums看起來每個關係都需要在那裏,儘管你可以在@NotFound(action = IGNORE)標籤上打耳光。那麼,我也這樣做了,它沒有錯誤,但我仍然有問題。 Hibernate不會緩存否定匹配,所以如果沒有找到縣/州對,則忽略該異常,但對「缺少數據」的知識不被緩存,因此它會按需重新加載關係時間。所以,當我在關係上進行左連接獲取時,它對我沒有任何幫助。此外,批量提取不會執行任何操作,我必須一次加載一個,而且我正在談論數千個實體。

我能做些什麼來解決這個問題?數據庫設計錯了嗎?謝謝!

回答

0

不幸的是,Hibernate的二級(你假設它?)緩存不支持緩存具有複合標識符的對象。