【发布时间】:2013-12-12 16:23:01
【问题描述】:
我有一个 Web 服务 DocGenerationServiceImpl,它使用 DocRepository 和将记录表示为 DocFileDO 的对象在表中插入(对于每种格式)记录。在 for 循环中,我可以获得在表中创建的记录的 id。对于每条记录,我将调用执行程序的执行方法,DocGenTask 将在其中搜索给定 id 的记录。但是,例如,有 3 种格式,DocGenTask 只能获取最后一条记录。前 2 个找不到。虽然它使用的是hibernateTemplate。可以请教吗?
@RestfulService
@Controller
@RequestMapping("/docs")
public class DocGenerationServiceImpl {
@Autowired
private TaskExecutor taskExecutor;
@Autowired
private DocRepository docRepository;
@RequestMapping(value = "/generate", method = RequestMethod.POST)
@ResponseBody
public String generatedDocFile(DOCParam param) {
for(String format : param.getFormatList()) {
DocFileDO docFileDO = new DocFileDO();
...
docRepository.saveDocFile(docFileDO);
log.debug("docFileDO id = " + docFileDO.getId());
DocGenTask task = new DocGenTask(docFileDO.getId());
task.setDocRepository(docRepository);
taskExecutor.execute(task);
}
}
}
@Repository
public class DocRepository {
@Autowired
private HibernateTemplate hibernateTemplate;
public DocFileDO saveDocFile(DocFileDO docFile) {
hibernateTemplate.save(docFile);
hibernateTemplate.flush();
return docFile;
}
public DocFileDO getDocFile(Long docFileId) {
return hibernateTemplate.get(DocFileDO.class, docFileId);
}
}
public class DocGenTask implements Runnable {
public void run() {
generate();
}
private void generate() {
DocFileDO docFileObj = docRepository.getDocFile(docFileId);
}
}
【问题讨论】:
标签: java spring web-services hibernate scheduled-tasks