【发布时间】:2020-10-17 10:31:06
【问题描述】:
不知道如何写标题,但我使用的是 Spring boot,并且我有一个类似的功能:
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_UNCOMMITTED)
public Optional<List<SomeClass>> bulkInsert(List<SomeClass> models, boolean withRefresh) {
int rowsInserted = someDao.bulkInsert(models).length;
if (rowsInserted > 0 && withRefresh) {
// I don't want the getLatest() function to operate in a transaction
return Optional.of(getLatest(someValue, models.size()));
}
return Optional.empty();
};
@Transactional(propagation = NOT_SUPPORTED)
public List<SomeClass> getLatest(long someValue, int limit) {
TransactionStatus status = TransactionAspectSupport.currentTransactionStatus(); ### says the transaction is active
return someDao.getLatest(accountId, limit);
};
基本上我想从事务中排除 getLatest() 。有可能吗?
【问题讨论】:
-
“从交易中排除”到底是什么意思?在您当前的代码中,当您在内部调用“getLatest”时,@Transactional(propagation = NOT_SUPPORTED) 未应用且完全无用。
-
我想你已经在下面回答了我想知道的问题。我将插入包装在手动事务中,删除了@Transactional,并在事务完成后放置 getLatest。全部使用 TransactionTemplate。
标签: java spring-boot transactions spring-data spring-transactions