新事务中的休眠合并/刷新错误

问题描述

我收到类似实体未管理的错误,不确定这是错误还是我做错了什么

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 (将#修改为@)