在JPA中删除和包含缓存

时间:2014-08-07 02:59:54

标签: java jpa

在JPA中,如果我有两个实体类Account和CheckingAccount,那么CheckingAccount扩展Account.I有一个主键为10的CheckingAccount实体实例。

Cache c=//get a reference to caache from entity manager factory
c.evict(Account.class,10);
boolean flag1=c.contains(Account.class,10);
boolean flag2=c.contains(CheckingAccount.class,10);

两个标志的值都是假的。

1 个答案:

答案 0 :(得分:0)

第一个c.contains(Account.class,10)肯定是假的 - 你要么已经从缓存中移除了这个实体,要么它不存在。

如果此实体已被放入缓存中,则第二个c.contains(CheckingAccount.class,10) 可以为真。

采用第二个参数的evict方法的版本仅适用于给定id的给定实体。它与Cache#evict(Class)不同,后者从缓存中删除所有实体及其子类。