假设我根据Spring中的请求参数缓存响应。
示例:
@Cacheable(value = "personDetails", key = "#personId")
public PersonDetails getPersonDetails(String personId) {
// Do something
}
现在让我们假设某人可以通过“所有人”。也作为personId和我不想缓存它。是否有可能我可以在运行时决定是否根据传递的Input参数缓存这个。请原谅这个例子,但用例相同。
感谢您提前回复:)
答案 0 :(得分:1)
是的,您可以使用condition
属性。
有时,某个方法可能不适合一直缓存(例如,它可能取决于给定的参数)。缓存注释通过
condition
参数支持此类功能,该参数将SpEL
表达式计算为true
或false
。
例如:
@Cacheable(value = "personDetails", key = "#personId", condition="#personId != 'ALL'")
public PersonDetails getPersonDetails(String personId) {
// Do something
}
您可以在Conditional caching
段落下找到here的更多信息。
答案 1 :(得分:0)
您可以使用查询提示并根据条件添加提示。
http://docs.jboss.org/hibernate/stable/entitymanager/reference/en/html/objectstate.html#d0e1215
您可以像setParameter一样使用setHint,如下所示:
.setHint(“org.hibernate.cacheable”, false)