1

アプリケーションには 3 つのエンティティがあります。マップされたスーパー クラスの person クラス エンティティと、person のサブクラスである親エンティティと子エンティティです。

アプリケーションは 4 つのエンティティ インスタンスを作成しました。

  1. Person1 はPerson、主キーが 50 のエンティティです
  2. Parent1 はParent、主キーが 100 のエンティティです
  3. Child1 はChild、主キーが 400 のエンティティです。
  4. Child2 はChild、主キーが 600 のエンティティです。

持続性ユニットでキャッシュが有効になっていて、持続性プロバイダーがキャッシュをサポートしており、どのエンティティにもCacheable注釈が適用されていないか、persistence.xml にキャッシュ可能な XML 要素がありません。

アプリケーションは次のコードを実行します。

Cache cache = . . . ; 
cache.evict(Person.class);
Boolean result = cache.contains(Child.class, 400); 

キャッシュに関連する同時アクティビティはないと仮定します。どのオブジェクトがキャッシュに残り、結果の値はどうなりますか?

私の理解では、キャッシュが有効になっているため、Person1、Parent1、Child1、Child2 のすべてがキャッシュに保存されます。を呼び出すと、とそのサブクラスcache.evict(Person.class)のオブジェクトとがキャッシュから削除されるため、キャッシュは空になります。したがって、キャッシュの値は false になります。私の理解は正しいですか、それともポイントがありませんか?PersonParentChild

4

0 に答える 0