0

我是一个完整的弹簧数据菜鸟。我有一个界面如下

public interface UserBalanceRepository extends PagingAndSortingRepository<UserBalance, Integer>
{
    @Cachable("UserList")
    @Query("select userId from UserBalance")
    List<Integer> ListUserIds(Pageable pageable);
}

我的缓存配置如下所示:

<cache:annotation-driven />

<!-- generic cache manager -->
<bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager">
  <property name="caches">
    <set>
      <bean class="org.springframework.cache.concurrent.ConcurrentCacheFactoryBean" p:name="UserList"/>
    </set>
  </property>
</bean>

缓存完全没有任何作用。我想这是因为代理类没有 @Cachable 注释,但是我如何使缓存工作?有没有不同的缓存方式?

我最后的手段是将需要缓存的调用放在包装类中并缓存在那里。

4

1 回答 1

0

我面临着同样的问题。你的代码和我的一样。我正在使用 eclipseLink,我也必须在 persistence.xml 上启用缓存。我刚刚添加了一个属性,

        [...]
        <class>com.project.web.model.entity.ReturnOrder</class>
        <class>com.project.web.model.entity.BillingAddress</class>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://connection string"/>
            <property name="javax.persistence.jdbc.user" value="user"/>
            <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
            <property name="javax.persistence.jdbc.password" value="pass"/>

            <!-- PROPERTY ADDED -->
            <property name="eclipselink.cache.shared.default" value="true"/>
        </properties>
    </persistence-unit>
</persistence>

此外,是一个非常好的教程。

于 2014-07-04T12:52:10.070 回答