如何解决Spring Data Couchbase不会引发OptimisticLockingFailureException
我正在尝试将应用程序从Spring Boot 2.2.6迁移到2.3.6。该更新还将spring-data-couchbase 3.2.6更新为4.0.2。较早的版本引发OptimisticLockingFailureException,但此升级不会引发异常。我正在使用调试器在持久之前停止执行,然后在ouchbase UI中手动更改数据并继续执行。在spring-data-couchbase 3.2.6中引发异常,但在4.0.2中不会引发
spring-data-couchbase 3.2.6
CouchbaseConfiguration.java
@Configuration
@EnableCouchbaseRepositories
public class CouchbaseConfiguration extends AbstractCouchbaseConfiguration {
@Value("${couchbase.cluster.bucketName}")
private String bucketName;
@Value("${couchbase.cluster.ip}")
private String ip;
@Value("${couchbase.cluster.password}")
private String password;
@Override
protected String getBucketName() {
return bucketName;
}
@Override
protected String getBucketPassword() {
return this.password;
}
@Override
protected List<String> getBootstrapHosts() {
return Arrays.asList(ip);
}
@Bean(name = BeanNames.COUCHBASE_TEMPLATE)
@Override
public CouchbaseTemplate couchbaseTemplate() throws Exception {
final CouchbaseTemplate template = super.couchbaseTemplate();
template.setWriteResultChecking(WriteResultChecking.EXCEPTION);
return template;
}
@Override
protected Consistency getDefaultConsistency() {
return Consistency.READ_YOUR_OWN_WRITES;
}
PersistenceSnippet.java
entity = repository.findById(id)
try {
return Optional.of(repository.save(entity)); // stop execution here in debugger
} catch (OptimisticLockingFailureException e) {
log.warn("Failed to persist optimistically");
return Optional.empty();
}
spring-data-couchbase 4.0.2
CouchbaseConfiguration.java
@Configuration
@EnableCouchbaseRepositories
public class CouchbaseConfiguration extends AbstractCouchbaseConfiguration {
@Value("${couchbase.cluster.bucketName}")
private String bucketName;
@Value("${couchbase.cluster.ip}")
private String ip;
@Value("${couchbase.cluster.password}")
private String password;
@Value("${couchbase.durability:lenient}")
private String durability;
@Override
public String getConnectionString() {
return ip;
}
@Override
public String getUserName() {
return bucketName;
}
@Override
public String getpassword() {
return password;
}
@Override
public String getBucketName() {
return bucketName;
}
是因为 template.setWriteResultChecking(WriteResultChecking.EXCEPTION); 的不同吗?但是4.0.2中的couchbase模板没有任何这样的方法。我在4.0.2中缺少任何配置以能够引发OptimisicLockingFailureExpception吗?我的实体对象具有@Version long version;
和@Document
批注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。