我正在使用弹簧和休眠。我正在使用 spring 进行事务管理。我有以下课程。
@Service
@Transactional(readOnly = true)
public class Sample implements SampleInterface{
@Override
public List<Some> getData(){
//gets data after that it updates something
setStatus(someId);
}
@Override
@Transactional
public void setStatus(Long someId){
//sets status
}
}
如果我不为 getData() 保留@Transactional,那么我会遇到异常。
Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode
如果我为 getData() 保留@Transactional,那么它将正确保存。这里有什么问题?任何我如何为 setStatus() 设置 @Transactional。我仍然需要为 getData() 保留@Transactional,因为它正在调用将设置状态的公共方法?
谢谢!