我有一个从文件导入数据库的 Web 应用程序。该方法是异步和事务性的,读取和插入对象。问题是导入方法需要 5 或 6 分钟。如果我在没有关闭事务的情况下抛出两次导入方法,则第二种方法会重复插入 id。第一次运行很好,但是当您提交辅助失败时。这是我的代码:
@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
}
}
我怎样才能解决这个问题?有没有办法用尾巴管理异步方法?对于直到另一个完成才开始的方法。