私はメソッドを持つ単純なSpringアプリケーションを持っています:
@Cacheable("getSession")
public Session getSession(String sessionId) { ...
これはeh-cacheに支えられており、うまく機能します。私が問題を抱えているのは、sessionId(キャッシュにキーを設定するためのGUID)に基づいてではなく、返されたオブジェクトのデータベースIDに基づいて、このキャッシュからオブジェクトを削除する必要があることです。
public void evictSessionFromCache(long id) { ...
このオブジェクトを削除する必要がある時点でsessionIdを知る方法はありません。
誰かがこれについて何か指針を持っていますか?EhCacheCacheManagerを拡張して、db IDとsessionIDの間のマッピングを持つラップされたキャッシュオブジェクトを返すようにしましたが、これは不格好な解決策のように感じます。
if(name.equals("getSession")) {
if(wrappedCache == null) {
wrappedCache = new WrappedCache(super.getCache(name));
}
return wrappedCache;
} else {
return super.getCache(name);
}
このアノテーションを利用し、複数のIDでオブジェクトにアクセスするために、すぐに使用できるプロパティはありますか?または、注釈を忘れて、cache / cacheManagerを直接操作する必要がありますか?
ありがとう!