如何使用springframework CrudRepository为每个保存操作动态设置Couchbase文档的TTL?

时间:2018-07-19 12:00:34

标签: spring couchbase

我想在特定文档的每次保存操作中设置不同的TTL值。就像我有一个包含雇员和指定字段的文档。

对于每个新雇员,应根据指定值设置TTL。就像员工是解决方案架构师一样,则文档有效期应设置为30天。如果指定为“高级建筑师”,则应将有效期设置为20天。

我知道如何通过spring框架设置到期时间,但是如何动态设置它? PFB:

@Document(expiry = Constants.COUCHBASE_RESOURCE_TTL)
public class EmployeeResource { 
}

2 个答案:

答案 0 :(得分:0)

除了默认设置外,您还可以使用http://docs.couchbase.com/sdk-api/couchbase-java-client-2.2.4/com/couchbase/client/java/Bucket.html#touch-java.lang.String-int-方法在运行时扩展/更新文档的TTL。

答案 1 :(得分:0)

保存文档并设置变量定义的TTL后,您可以touch保存文档。

假设您有一个名为getTTLByEmployee的方法,该方法将按Employee类型返回TTL(int)。您可以执行以下操作:

Employee savedEmployee = yourRepository.save(employee);
yourRepository.getCouchbaseOperations().getCouchbaseBucket()
          .touch(savedEmployee.getId(), getTTLByEmployee(employee.getEmployeeType()));