我有一個 emailsenderservice 來異步管理電子郵件通知。有 2 種異步方法,一種方法有效,但另一種方法拋出 LazyInitializationException:@Servicepublic class EmailSenderService { // working @Async public void sendNewBidRequestEmail(BidRequest bidRequest) { this.sendNewBidRequestEmailToSupplier(bidRequest); } @Transactional public void sendNewBidRequestEmailToSupplier(BidRequest bidRequest) { sendNewBidRequestEmailToSupplier(bidRequest, bidRequest.getHotels()); } @Transactional public void sendNewBidRequestEmailToSupplier(BidRequest bidRequest, List<Hotel> hotelList) { for (Hotel hotel : hotelList) { ... this.sender.send() } } // not working, throw exception @Async public void sendCancelledBidRequestEmail(BidRequest bidRequest, String reason) { this.sendCancelledBidRequestEmailToSupplier(bidRequest, bidRequest.getHotels(), reason); } @Transactional public void sendCancelledBidRequestEmailToSupplier(BidRequest bidRequest, List<Hotel> hotelList, String reason) { for (Hotel hotel : hotelList) { // throw exception here ... this.sender.send(); }}我完全按照這個線程。您可以看到兩種異步方法具有幾乎相同的結構。異步方法調用事務方法。而第二個拋出org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.corpobids.server.entity.BidRequest.hotels, could not initialize proxy - no Session。
添加回答
舉報
0/150
提交
取消