アプリケーションには 3 つのエンティティがあります。マップされたスーパー クラスの person クラス エンティティと、person のサブクラスである親エンティティと子エンティティです。
アプリケーションは 4 つのエンティティ インスタンスを作成しました。
- Person1 は
Person
、主キーが 50 のエンティティです - Parent1 は
Parent
、主キーが 100 のエンティティです - Child1 は
Child
、主キーが 400 のエンティティです。 - 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 になります。私の理解は正しいですか、それともポイントがありませんか?Person
Parent
Child