を設定し、キャッシュキーが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);
}
いずれかのアイデアはありますか?
ありがとうございます。
結果の値はチェックして、パラメータの値はチェックしてはいけませんか?だから、 '#pu.uuid == null'の代わりに'#result.uuid == null' ... –
私は両方を試しました。同じ問題。実際にresult.uuidはuuidが単なるプロパティであるため、p0.uuidと等価です – Qiao
'unless'の代わりに' condition = "#p0.uuid!= null" ' –