我使用spring和hibernate。我正在使用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
}
}
如果我不保留@Transactional getData()然后我得到异常下面。
Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode
如果我保留@Transactional getData(),那么它将正确保存。这里有什么问题?任何我有@Transactional为setStatus()。我还需要为getData()保留@Transactional,因为它正在调用将设置状态的公共方法?
谢谢!
感谢您的回复。如果我保留@Transactional getData(),那么我的问题就解决了。这是不错的做法吗? – user1016403 2012-08-14 11:17:59
@ user1016403:这不是最好的方法,但我没有找到更好的方法。你*可以*提取'setStatus()',但它不会解决你的特定问题。 – 2012-08-14 11:32:25
感谢您的回复! – user1016403 2012-08-14 11:46:40