应用程序有三个实体:映射的超类person类实体,以及父类和子实体,它们是person的子类。
应用程序创建了四个实体实例:
Person
实体,主键为50 Parent
实体,主键为100 Child
实体,主键为400 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)
时,Person
及其子类(即Parent
和Child
的对象将从缓存中删除,因此缓存将为空。因此,缓存的值将为false。我的理解是正确的还是我错过了任何一点?