簡體   English   中英

Spring 事務注釋回滾測試似乎對 go 不太好

[英]Spring transactional annotation rollback test doesn't seem to go well

這是 Controller 代碼:

@GetMapping("/test/hello")
    public String test()  {
        Member m = memberService.transactionTest();
        return "haha";
    }

這是服務代碼:

   @Transactional(rollbackFor = NullPointerException.class)
    public Member transactionTest() {
            Member m = Member.builder()
                    .username("rollback")
                    .age(32)
                    .team(teamRepository.findById(1L).get())
                    .coach(coachRepository.findById(1L).get())
                    .build();
            memberRepository.save(m);
            exception();
            return m;
    }

    public void exception(){
        Member m = null;
        m.getUsername();
    }

據我所知,它何時完成應該回滾,因為發生了 RuntimeException 但插入過程運行良好,所以我想知道為什么。

因為Optional.get()拋出NoSuchElementException (而不是 null 指針)。

從 javadoc

public T get()

如果此Optional中存在值,則返回該值,否則拋出NoSuchElementException ...。

通過rollbackFor = NullPointerException.class您可以將NoSuchElementException從可回滾的異常中排除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM