Java 在JPA中的缓存上逐出并包含

Java 在JPA中的缓存上逐出并包含,java,jpa,Java,Jpa,在JPA中,如果我有两个实体类Account和CheckingAccount,那么CheckingAccount扩展Account。我有一个主键为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.con

在JPA中,如果我有两个实体类Account和CheckingAccount,那么CheckingAccount扩展Account。我有一个主键为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);
两个标志的值都将为false。

第一个
c.contains(Account.class,10)
肯定会为false-您已经从缓存中删除了此实体,或者它不存在

第二个
c.contains(CheckingAccount.class,10)
如果该实体已放入缓存,则该值可以为true

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