微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring Data Couchbase不会引发OptimisticLockingFailureException

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?