2017-03-22 7 views
0

を設定し、キャッシュキーがNULL可能でヌルキーを無視していないので、キー nullでないとき、私だけたくはキャッシュにそれを置きます。春のキャッシュも、私は自分のアプリケーションでは条件

私は多くの方法を試しましたが、のように見えます。スプリングキャッシュは常に空のキーが欲しいです。それ以外の場合は、例外がスローされます。

はIllegalArgumentException:ヌルキーは(多分あなたは情報をデバッグすることなく、クラスにparamsという名前を使用している ?)キャッシュ操作のために戻さ Builderの[パブリックcom.madme.sharding.model.App コム。 madme.sharding.service.impl.AppServiceImpl.saveOrUpdateApp(com.madme.sharding.model.App)] キャッシュ= [appsCache] | key = '#result.uuid' | keyGenerator = '' | cacheManager = 'redisCacheManager' | cacheResolver = '' |条件= '' | は=「#のp0.uuid == nullの」参考ない限り:1490185514616_gcfal96

私は以下のような条件「しない限り、」指定されていれば、それだけで任意の例外をスローすることなく、このCachePutを無視すべきであると思いました。

// I've tried #result.uuid and #p0.uuid, same output 
@CachePut(value = APPS_CACHE, cacheManager = "redisCacheManager", key = "#result.uuid", unless = "#result.uuid == null") 
public App saveOrUpdateApp(App app) { 
    return appRepository.saveAndFlush(app); 
} 

いずれかのアイデアはありますか?

ありがとうございます。

+0

結果の値はチェックして、パラメータの値はチェックしてはいけませんか?だから、 '#pu.uuid == null'の代わりに'#result.uuid == null' ... –

+0

私は両方を試しました。同じ問題。実際にresult.uuidはuuidが単なるプロパティであるため、p0.uuidと等価です – Qiao

+0

'unless'の代わりに' condition = "#p0.uuid!= null" ' –

答えて

0

'条件= "#p0.uuid!= null"' ...ブラックリスト( 'なし')とホワイトリスト( '条件')が同時にチェックされていないことを認識しませんでした。 '条件'はキー生成の前に適用され、 '後で'が適用されます。ありがとうございますv @ @ M.Deinum

関連する問題