私はを呼び出すController
を持っています。これは@Transactional
というアノテーションを持っています。MethodValidationPostProcessorが破損する@Transactional
しかし、私は豆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
}
}
私はMethodValidationPostProcessor
を宣言するとき@Transactional
が動作しない理由を理解したいと思います。ありがとう!
注:コントローラに@Transactionalを追加すると動作します。しかし、それは私がしたいことではありません。
教えにくいクラスは見ません。 –
こんにちは、私はあなたが必要とするようにクラスを完了しました。 – Pleymor