1

一个应用程序具有三个实体:映射的超类 person 类实体,以及作为 person 的子类的父子实体。

该应用程序创建了四个实体实例:

  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)的对象,即and ,将从缓存中删除,因此缓存将为空。因此,缓存的值将是假的。我的理解正确还是我遗漏了任何一点?PersonParentChild

4

0 回答 0