बनाता है मैं एक क्षेत्र में आलसी लोड करने के लिए मेरी सेवा पर एक विधि में @Transactional
एनोटेशन का उपयोग करने की कोशिश कर रहा हूं। हालांकि, मेरे कार्यान्वयन वर्ग पर @Transactional
का उपयोग करके सभी स्वायत्त फ़ील्ड null
बनाता है।स्प्रिंग बूट 2 @ ट्रान्सएक्शनल एनोटेशन ऑटोवायर फ़ील्ड शून्य
@Service
public class UserServiceImpl implements UserService {
/**
* DefaultMapper.
*/
@Autowired
private DefaultMapper defaultMapper;
/**
* Resource service injection.
*/
@Autowired
private ResourceService resourceService;
/**
* UserRepository.
*/
@Autowired
private UserRepository userRepository;
/**
* Jwt Factory.
*/
@Autowired
private JwtService jwtService;
@Override
@Transactional
public final UserDto findByLogin(final String login) throws ResourceNotFoundException {
// user repository is null here when using @Transactional
User user = this.userRepository.findByLogin(login)
.orElseThrow(() -> new ResourceNotFoundException(
resourceService.getMessage(MessageBundle.EXCEPTION, "resource.notfound.user.login")
));
UserDto userDto = defaultMapper.asUserDtoWithRoles(user);
return userDto;
}
अग्रिम धन्यवाद:
यहाँ मेरी कार्यान्वयन है।
अपनी विधि से 'अंतिम' निकालें या अपने 'application.properties' में' spring.aop.proxy-target-class = false' सेट करें। ** नोट: ** इसके लिए स्प्रिंग बूट 1.5.3 या पूरी तरह से काम करने की आवश्यकता है! –
क्या आपके वसंत आवेदन में लेनदेन संबंधी संदर्भ सक्षम है? – drgPP
एक लेन-देन करना रीडिंग एक्शन के दौरान बेकार समय है, क्या आपको यकीन है कि आपको रीडिंग-ट्रांजैक्शन की आवश्यकता है? – Zorglube