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 に答える