我对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缓存中获取它,所以我相当公平相信我已经正确完成了其余的配置。对不起,仍然在工作中的石器时代,所以没有注释等。