1

休眠中有什么方法可以禁用 .hbm 文件中特定属性的二级缓存(通过提供一些忽略缓存属性)?

例如,我有 TextObject.hbm.xml 文件如下

    <hibernate-mapping default-cascade="save-update" auto-import="false">
        <class name="com.nish.TextObject" table="TEXT_TABLE" schema="SFMFG">
            <cache usage="read-write" />
            <id name="objectId" type="string">
                <column name="OBJECT_ID" length="40" />
                <generator class="assigned" />
            </id>
            <property name="text" type="clob">
                <column name="TEXT">
                    <comment>Text</comment>
                </column>
            </property>
            <property name="plainText" type="string">
                <column name="PLAIN_TEXT">
                    <comment>Plain text</comment>
                </column>
            </property>
        </class>
    </hibernate-mapping>

通过使用<cache usage="read-write" />,我启用了类级缓存。

要求::我想要什么

  • 如果我拍摄休眠查询来获取TextObject.text属性,那么它不应该被缓存。
  • 但是如果我拍摄休眠查询来获取,TextObject.plainText那么它应该被缓存。
  • 总之,对于我在 .hbm 文件中配置的少数属性,应该禁用缓存,对于我没有配置的少数属性,应该启用缓存。

提问的原因:

  • Hibernate 不允许缓存 clob 值,因此在使用type = 'clob'缓存获取属性时必须禁用,但对于其他可缓存属性,应启用兑现。

笔记 :

  • 是的,我可以通过删除来禁用类级缓存, <cache usage="read-write" />但这是为整个实体类删除缓存的最后一种情况。
4

0 回答 0