hibernate-クエリキャッシュ/セカンドレベルキャッシュは、サブタイムを含む値オブジェクトによって機能しません

StackOverflow https://stackoverflow.com/questions/2201457

質問

私は次の問題に苦労しています:
さまざまなパネルを含む値オブジェクトがあります。各パネルにはフィールドのリストがあります。

マッピング:

<class name="com.aviseurope.core.application.RACountryPanels" table="CTRY" schema="DBDEV1A" where="PEARL_CTRY='Y'" lazy="join">
<cache usage="read-only"/>
<id name="ctryCode">
<column name="CTRY_CD_ID" sql-type="VARCHAR2(2)" not-null="true"/>
</id>
<bag name="panelPE" table="RA_COUNTRY_MAPPING" fetch="join" where="MANDATORY_FLAG!='N'">
<key column="COUNTRY_LOCATION_ID"/>
<many-to-many class="com.aviseurope.core.application.RAFieldVO" column="RA_FIELD_MID" where="PANEL_ID='PE'"/>
</bag>
</class>

次の基準を使用して、値オブジェクトを取得します。

Session m_Session = HibernateUtil.currentSession();
            m_Criteria = m_Session.createCriteria(RACountryPanels.class);
            m_Criteria.add(Expression.eq("ctryCode", p_Country));
            m_Criteria.setCacheable(true);

私が見るように、クエリキャッシュにはメインセレクトのみが含まれています

select * from CTRY where ctry_cd_id=?

RacountrypanelsとRafieldvoはどちらも、第2レベルのキャッシュされています。 2番目のレベルのキャッシュコンテンツをチェックすると、RafieldsとRacountrypanelsも同意し、Selectを見ることができます。

サーブレットを呼び出すと、キャッシュを使用しているようですが、2回目は使用していません。 JMXを使用してキャッシュのコンテンツを確認すると、すべてが問題ないように見えますが、オブジェクトアクセス時間を測定すると、常にキャッシュを使用しているわけではないようです。

乾杯ゾルタン

役に立ちましたか?

解決

また、協会をキャッシュする必要があると思います。

<bag name="panelPE" table="RA_COUNTRY_MAPPING" fetch="join" where="MANDATORY_FLAG!='N'">

  <cache usage="read-write"/>

  <key column="COUNTRY_LOCATION_ID"/>
  <many-to-many class="com.aviseurope.core.application.RAFieldVO" column="RA_FIELD_MID" where="PANEL_ID='PE'"/>
</bag>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top