我有一個Controller
它調用Service
其中有@Transactional
註釋。MethodValidationPostProcessor休息@Transactional
但是當我聲明一個bean MethodValidationPostProcessor
,沒有創建事務(無法初始化代理 - 沒有會話)。
@EnableWebMvc
@ComponentScan(basePackages = {"my"})
public class Application extends WebMvcConfigurerAdapter {
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
}
控制器豆:
@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);
}
}
服務豆:
@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
}
}
我想明白爲什麼@Transactional
當我宣佈MethodValidationPostProcessor
不起作用。謝謝 !
注意:如果我在我的控制器上添加了@Transactional,它可以工作。但這不是我想要做的。
沒有看到你的班級很難說。 –
你好,我已經完成了我所需要的課程。 – Pleymor