【发布时间】:2020-09-08 05:05:34
【问题描述】:
用例:-
我们正在使用 Spring-data-aerospike 来获取并保存 aerospike 记录。
问题:- 我们在两个不同的 aerospike 集合中执行 SAVE,这两个 SAVE 都应该以事务方式发生,即如果第二次写入失败,那么第一次写入也应该回滚。
这里的代码-sn-p 看起来像:-
@Document(collection = "cust", expiration = 90, expirationUnit = TimeUnit.DAYS)
public class Customer {
@Id
@Field(value = "PK")
private String custId;
@Field(value = "mobileNumber")
private String mobileNumber;
}
@Document(collection = "custDetails", expiration = 90, expirationUnit = TimeUnit.DAYS)
public class CustomerDetails {
@Id
@Field(value = "PK")
private String custDetailsId;
@Field(value = "addnDetails")
private Map additionalDetails;
}
@Repository
public interface CustomerRepository extends AerospikeRepository<Customer, String> {}
@Repository
public interface CustomerDetailsRepository extends AerospikeRepository<CustomerDetails, String>{}
@Autowired
AerospikeTemplate aerospikeTemplate;
这是我们想要实现的,但现在还不行:--
@Transactional(isolation = Isloation.SERIALIZABLE, rollbackFor=Exception.class)
public ResponseDTO<String> updateCustomer(CustomerUpdateRequest custUpdateReqDTO) {
Optional<Customer> cust = customerRepository.findById(custUpdateReqDTO.getCustId());
// Update Business logic of Customer Record.
aerospikeTemplate.update(cust);
Optional<CustomerDetails> custDet = customerDetailsRepository.findById(custUpdateReqDTO.getCustDetId());
// Update Business logic of CustomerDetails Record.
aerospikeTemplate.update(custDet);
}
这里的依赖看起来像:-
<dependency>
<groupId>com.aerospike</groupId>
<artifactId>aerospike-client</artifactId>
<version>4.1.3</version>
</dependency>
<dependency>
<groupId>com.aerospike</groupId>
<artifactId>spring-data-aerospike</artifactId>
<version>${aerospike.data.version}</version>
<scope>system</scope>
<systemPath>${basedir}/lib/spring-data-aerospike-2.0.0.RELEASE.jar</systemPath>
</dependency>
<dependency>
<groupId>com.aerospike</groupId>
<artifactId>aerospike-client</artifactId>
</dependency>
<dependency>
<groupId>com.aerospike</groupId>
<artifactId>aerospike-helper-java</artifactId>
<version>1.2.2</version>
</dependency>
问题:-
我们知道 Spring 事务注释可与 RDBMS 一起使用!在这种情况下,让事务性属性在这里工作的方法是什么??
任何帮助或建议将不胜感激!
【问题讨论】:
标签: java spring-data-jpa spring-data aerospike aerospike-ce