J'ai un Controller
qui appelle un Service
qui a @Transactional
annotation.MéthodeValidationPostProcessor breaks @Transactional
Mais lorsque je déclare un bean MethodValidationPostProcessor
, aucune transaction n'est créée (impossible d'initialiser le proxy - aucune session).
@EnableWebMvc
@ComponentScan(basePackages = {"my"})
public class Application extends WebMvcConfigurerAdapter {
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
}
haricot Controller:
@RestController
@RequestMapping(path = "/my", produces = APPLICATION_JSON_VALUE)
public class MyController {
@Autowired
private TransactionalService transactionalService;
@RequestMapping(method = POST)
public void post(@SafeHtml @RequestBody String hey) {
transactionalService.doStuff(hey);
}
}
haricot service:
@Service
public class TransactionalService {
@PersistenceContext
private EntityManager entityManager;
@Transactional
public void doStuff(String hey) {
Item h = entityManager.find(Item.class, hey);
h.getParent(); // could not initialize proxy - no Session
}
}
Je voudrais comprendre pourquoi @Transactional
ne fonctionne pas quand je déclare MethodValidationPostProcessor
. Merci !
Remarque: Si j'ajoute @Transactional sur mon contrôleur, cela fonctionne. Mais ce n'est pas ce que je veux faire.
Sans voir votre classe difficile à dire. –
Bonjour, j'ai terminé mes cours selon vos besoins. – Pleymor