问题描述
是否有可能将只读事务与 Spring Data R2DBC 一起使用,尤其是与 Google Spanner DB Backend 一起使用? Spanner R2DBC 驱动程序支持 RO 事务,并提供很多可扩展性优势(无锁定!)。但是,它不是 R2DBC 标准,我在 Spring Data R2DBC 文档中没有找到任何支持。
解决方法
根据我的研究,这似乎是不可能的。
我在此处提交了一项功能请求,要求支持 Spring Data R2DBC 中的扩展功能:https://github.com/GoogleCloudPlatform/cloud-spanner-r2dbc/issues/314
目标是允许您使用事务注释进行只读事务,例如:
// assume that two arrays have the same
// length,or 'booArr' is less than 'arr'
Object[] arr = new Object[]{1,2.0,-1,3};
Boolean[] booArr = {true,true,false,true};
Object[] validArr = IntStream
// iterate through array indexes
.range(0,booArr.length)
// filter trues
.filter(i -> booArr[i])
// take values that are true
.mapToObj(i -> arr[i])
// return an array
.toArray();
// output
System.out.println(Arrays.toString(validArr));
// [1,3]