0

ファイルからデータベースにインポートする Web アプリケーションがあります。このメソッドは非同期でトランザクション対応で、オブジェクトの読み取りと挿入を行います。問題は、インポート方法に 5 ~ 6 分かかることです。トランザクションを閉じずに import メソッドを 2 回スローすると、2 番目のメソッドは挿入の ID を繰り返し取得します。最初の実行は問題なく実行されますが、コミットすると 2 番目の実行は失敗します。これは私のコードです:

@Controller
public class IndexController {

    @Autowired
    private fooServicio fService;

    @RequestMapping(value="/", method = RequestMethod.GET)
    public final ModelAndView printIndex(MultipartFile file) 
    {
        ModelAndView view = new ModelAndView("index");


        foService.import(file);

        view.addObject("message", "The file is loading"); 
        return view;        
    }
}

@Service
@Transactional(readOnly = true)
public class FooServiceImpl implements FooService {

    @Async
    @Override
    @Transactional(readOnly = false)
    public final void import(final MultipartFile file) throws ServiceException {
            //Read file and inserts
    }
} 

どうすればこれを修正できますか? 非同期メソッドをテールで管理する方法はありますか? 別のメソッドが終了するまで開始されないメソッドの場合。

4

0 に答える 0