debop / hibernate-redis

hibernate 2nd level cache privder using redis
Apache License 2.0
357 stars 184 forks source link

java.lang.IncompatibleClassChangeError when using ReadWriteRedisEntityRegionAccessStrategy.generateCacheKey #93

Closed osamasayed closed 7 years ago

osamasayed commented 7 years ago

Hello, I get exception java.lang.IncompatibleClassChangeError when trying to use ReadWriteRedisEntityRegionAccessStrategy.generateCacheKey.. Here is the stack trace:

SEVERE: Servlet.service() for servlet [xxxxx] in context with path [/xxxx] threw exception [org.glassfish.jersey.server.ContainerException: java.lang.IncompatibleClassChangeError: Expected static method org.hibernate.cache.internal.DefaultCacheKeysFactory.createEntityKey(Ljava/lang/Object;Lorg/hibernate/persister/entity/EntityPersister;Lorg/hibernate/engine/spi/SessionFactoryI] with root cause
java.lang.IncompatibleClassChangeError: Expected static method org.hibernate.cache.internal.DefaultCacheKeysFactory.createEntityKey(Ljava/lang/Object;Lorg/hibernate/persister/entity/EntityPersister;Lorg/hibernate/engine/spi/SessionFactoryI
    at org.hibernate.cache.redis.hibernate52.strategy.ReadWriteRedisEntityRegionAccessStrategy.generateCacheKey(ReadWriteRedisEntityRegionAccessStrategy.java:54)
    at org.hibernate.event.internal.DefaultLoadEventListener.getFromSharedCache(DefaultLoadEventListener.java:644)
    at org.hibernate.event.internal.DefaultLoadEventListener.loadFromSecondLevelCache(DefaultLoadEventListener.java:595)
    at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:462)
    at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:219)
    at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:278)
    at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:121)
    at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:89)
    at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1230)
    at org.hibernate.internal.SessionImpl.access$1900(SessionImpl.java:203)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.doLoad(SessionImpl.java:2787)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2761)
    at org.hibernate.internal.SessionImpl.get(SessionImpl.java:1066)

Here is how how my pom.xml looks like:

<dependencies>
         <dependency>
            <groupId>com.github.debop</groupId>
            <artifactId>hibernate-redis</artifactId>
            <version>${hibernate-redis}</version>
        </dependency>
        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson</artifactId>
            <version>${redisson.version}</version>
        </dependency>
        <dependency>
            <groupId>de.ruedigermoeller</groupId>
            <artifactId>fst</artifactId>
            <version>${fst.version}</version>
        </dependency>
        <dependency>
            <groupId>org.xerial.snappy</groupId>
            <artifactId>snappy-java</artifactId>
            <version>${snappy-java.version}</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>${hibernate-version}</version>
        </dependency>
</dependencies>
<properties>
        <redisson.version>3.3.2</redisson.version>
        <hibernate-version>5.2.6.Final</hibernate-version>
        <hibernate-redis>2.3.2</hibernate-redis>
        <fst.version>2.47</fst.version>
        <snappy-java.version>1.1.2.6</snappy-java.version>
        <slf4j-version>1.7.25</slf4j-version>
</properties>

And this is how my hibernate.cfg.xml looks like:

<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.use_query_cache">true</property>
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.redis.hibernate52.SingletonRedisRegionFactory</property>
<property name="hibernate.cache.provider_configuration_file_resource_path">hibernate-redis.properties</property>
fengbaicanhe commented 7 years ago

see issue #92 , or you can clone this project and install version release/2.4.0 in your local

debop commented 7 years ago

use repository jcenter