Я пытаюсь настроить транзакционный ehcache, используя Spring @Cacheable и @Transactional.Ehcache локальные транзакции с Spring @Transactional
Мои кэши прекрасно работают с @Cacheable, но как только я настроить мой кэш использовать локальную транзакцию:
<cache name="currencyCodeMaps" maxElementsInMemory="100" overflowToDisk="false" timeToIdleSeconds="5" timeToLiveSeconds="600" memoryStoreEvictionPolicy="LRU" transactionalMode="local"/>
Когда я получить доступ к кэш я получаю сообщение об ошибке:
net.sf.ehcache.transaction.TransactionException: transaction not started
даже хотя тот же метод аннотируется @Transactional. Мой менеджер Весна сделка:
org.springframework.orm.jpa.JpaTransactionManager
ehcache documentation говорит локальные транзакции контролируются явным образом:
Local transactions are not controlled by a Transaction Manager. Instead there is an explicit API where a reference is obtained to a TransactionController for the CacheManager using cacheManager.getTransactionController() and the steps in the transaction are called explicitly
Но это будет трудно, так как я хочу, чтобы синхронизировать свои Ehcache операции с БД операций, и DB транзакции контролируются @Transactional.
Есть ли способ заставить локальные транзакции Ehcache работать с Spring @Transactional?