我對hibernate有點新,並試圖使用ehCache實現二級緩存。嘗試使用L2高速緩存來檢索多對一關聯時遇到問題。在我foo.hbm.xml文件的關聯映射是這樣的:對於多對一關聯的休眠L2緩存
<hibernate-mapping>
<class name="com.test.Foo" table="FOO" >
<id name="id" type="long">
<column name="FOO_ID" precision="11" scale="0" />
<generator class="assigned" />
</id>
<many-to-one name="bar" class="com.test.Bar" >
<cache usage="read-only" />
<column name="BAR_TY" not-null="true" />
<column name="BAR_VAL" length="4" not-null="true" />
</many-to-one>
</class>
</hibernate-mapping>
(這是我的實際hbm.xml文件中的一個很短/修改後的版本,它希望沒有錯誤)
注意我只緩存「酒吧」,而不是「富」。但是,當我使用此映射運行單元測試時,出現以下錯誤:
SEVERE:解析XML時出錯:XML InputStream(40)元素類型「多對一」的內容必須匹配「(meta * (列|式)*)」。
當我拿出它工作正常,只是沒有L2緩存。 難道多對一關係不支持緩存嗎?如果是這樣,有什麼建議如何解決這個問題?
僅供參考我有另一個直接讀取「bar」(即不通過關聯)的單元測試,它能正常工作 - 第二次我得到一個「bar」它從L2緩存中獲取它,所以我相當公平相信我已經正確完成了其餘的配置。對不起,仍然在工作中的石器時代,所以沒有註釋等。