问题描述
class JobRunner {
private JobRun jobRunService;
private BusinessService businessService;
public void run(long configId) {
JobRun jobRun = jobRunService.create(configId);
try {
businessService.run(jobRun)
jobRunService.markAsDone(jobRun);
} catch(Exception ex) {
jobRunService.markAsError(jobRun);
}
}
}
class JobRunService {
@Transactonal
public JobRun create(long id) {
}
@Transactional
public void markAsDone(JobRun jobRun) {
jobRunRepository.update(...);
}
@Transactional
public void markAsError(JobRun jobRun) {
jobRunRepository.update(...);
}
}
class BusinessService {
@Transactional
public void run(JobRun jobRun) {
jobRunRepository.getEntityManager().merge(jobRun);
// doesn't work - entity not managed error
jobRunRepository.getEntityManager().refresh(jobRun);
}
}
这是一个伪代码给出的想法
就 sql 操作而言,这是确保状态始终在 db 上更新的最佳方式吗?
我是否用 find 替换了合并/刷新?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)