Skip to content

spring 事务 PROPAGATION_NESTED纠错#1

Merged
1autodidact merged 1 commit intomasterfrom
spring-事务-PROPAGATION_NESTED纠错
Mar 10, 2022

Hidden character warning

The head ref may contain hidden characters: "spring-\u4e8b\u52a1-PROPAGATION_NESTED\u7ea0\u9519"
Merged

spring 事务 PROPAGATION_NESTED纠错#1
1autodidact merged 1 commit intomasterfrom
spring-事务-PROPAGATION_NESTED纠错

Conversation

@1autodidact
Copy link
Copy Markdown
Owner

ROPAGATION_NESTED:如果当前存在事务,就在嵌套事务内执行;如果当前没有事务,就执行与PROPAGATION_REQUIRED类似的操作,子事务回滚外部主事务也会受到影响进行回滚

@Service
public class UserInvokeService {
    @Autowired
    private UserService userService;
    @Resource
    private UserMapper userMapper;

    @Transactional
    public void invokeUserService() {
        User user = new User();
        user.setName("zxx");
        user.setAge(333333);
        userMapper.insert(user);
        userService.insertData();

    }
}


@Service
public class UserService {

    @Resource
    private UserMapper userMapper;


    @Transactional(propagation = Propagation.NESTED)
    public void insertData() {
        User user = new User();
        user.setName("inserByNested");
        user.setAge(2222);
        userMapper.insert(user);
        int a = 1 / 0;
    }

}


@SpringBootTest
public class TransactionalTest {
    @Autowired
    UserService userService;
    @Autowired
    UserInvokeService userInvokeService;
    @Test
    public void testTransaction() {
        userInvokeService.invokeUserService();
    }
}

ROPAGATION_NESTED:如果当前存在事务,就在嵌套事务内执行;如果当前没有事务,就执行与PROPAGATION_REQUIRED类似的操作,子事务回滚外部主事务也会受到影响进行回滚



``` 
@service
public class UserInvokeService {
    @Autowired
    private UserService userService;
    @resource
    private UserMapper userMapper;

    @transactional
    public void invokeUserService() {
        User user = new User();
        user.setName("zxx");
        user.setAge(333333);
        userMapper.insert(user);
        userService.insertData();

    }
}


@service
public class UserService {

    @resource
    private UserMapper userMapper;


    @transactional(propagation = Propagation.NESTED)
    public void insertData() {
        User user = new User();
        user.setName("inserByNested");
        user.setAge(2222);
        userMapper.insert(user);
        int a = 1 / 0;
    }

}


@SpringBootTest
public class TransactionalTest {
    @Autowired
    UserService userService;
    @Autowired
    UserInvokeService userInvokeService;
    @test
    public void testTransaction() {
        userInvokeService.invokeUserService();
    }
}
```
@1autodidact 1autodidact merged commit 4ef7033 into master Mar 10, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant