【发布时间】:2012-08-10 15:52:52
【问题描述】:
我正在使用弹簧和休眠。我正在使用 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,因为它正在调用一个将设置状态的公共方法?
谢谢!
【问题讨论】: