休止状態で特定のプロパティの第 2 レベルのキャッシュを無効にする方法はありますか (無視するキャッシュ プロパティを提供することにより)。
たとえば、次のような 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" />
エンティティ クラス全体のキャッシュを削除する最後のケースです。