Выселить и содержится на кеше в JPA

1

В JPA, если у меня есть два класса объектов Account и CheckingAccount, так что CheckingAccount расширяет Account.I есть экземпляр объекта CheckingAccount с первичным ключом из 10.

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);

значение обоих флагов будет ложным.

Теги:
jpa

1 ответ

0
Лучший ответ

Первые c.contains(Account.class,10) безусловно, будут ложными - вы либо удалили этот объект из кеша, либо он не существует.

Второй c.contains(CheckingAccount.class,10) может быть прав, если этот объект был помещен в кеш.

Версия метода evict которая принимает второй аргумент, работает только для данного объекта данного идентификатора. Это не то же самое, что Cache#evict(Class) который удаляет все сущности вместе с ними подклассы из кеша.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню