我是一个完整的春季数据菜鸟。我有一个如下界面
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注释,但是如何使缓存工作?是否有不同的缓存方式?
我的最后一招是将需要缓存的调用放在包装器类中并缓存在那里。
答案 0 :(得分: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>
此外,this是一个非常好的教程。