Я пытаюсь реализовать кэш второго уровня в моем приложении гибернации, но я получаю следующее исключение при попытке получить SessionFactory
On-the-fly creation of JCache Cache objects is not supported [model.entity.Comment]
У меня есть следующий конфиг в моем hibernate.cfg.xml
файле
<property name="hibernate.cache.use_second_level_cache">
true
</property>
<property name="hibernate.cache.region.factory_class">
org.hibernate.cache.ehcache.EhCacheRegionFactory
</property>
А ehcache.xml
в src/main/resources
<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="true"
monitoring="autodetect" dynamicConfig="true">
<diskStore path="java.io.tmpdir/ehcache" />
<defaultCache maxEntriesLocalHeap="10000" eternal="false"
timeToIdleSeconds="120" timeToLiveSeconds="120" diskSpoolBufferSizeMB="30"
maxEntriesLocalDisk="10000000" diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU" statistics="true">
<persistence strategy="localTempSwap" />
</defaultCache>
</ehcache>
С зависимостями
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.3.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>5.3.1.Final</version>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>2.6.9</version>
</dependency>
И я просто не могу заставить это работать должным образом.
Модель помечена как это
@Entity
@Table(name = "comment")
@Cacheable
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Comment {
Есть ли что-то очевидное, чего мне здесь не хватает?
EDIT
Я изменил конфиг, добавив это свойство в hibernate.cfg.xml
<property name="net.sf.ehcache.configurationResourceName">ehcache.xml</property>
Это изменило ситуацию, что приятно и создает впечатление, что конфигурация полностью игнорируется.
Однако это не решило проблему, так как теперь выдает:
java.lang.IllegalStateException: Cache provider not started