我使用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