我有兩個實體:Message
和Session
。 Message
與Session
的關係爲@ManyToOne
。spring-data postgres事務隔離問題
我有一個春天的數據倉庫和行動答:
@Query("select c from Messages c where c.session.mode=0 and c.field=5")
List<Messages> findMessages();
然後我過程中發現數據
messages.ForEach(message->{
Session session = message.getSession();
sessionClose(session);
newSessionOpen();
})
和其他服務類我有
Session session=findOpenedSession();
的問題是:
如果行爲A在交易中並且在它開始之後並且在結束其他服務之前將會請求打開Session
或將嘗試將記錄插入到Message
表中?
換句話說,我們有:
- 交易開始
- 記錄被讀取
Session
情況下獲得一個循環處理 -Session
使用sessionClose
和newSessionOpen
- 交易結束
如果某些其他過程將請求在2和4或2和3之間打開Session
或在某個地方打開Session
? 那麼它會打開Session
它會讀取?舊的還是新的? 我使用postgres和@Transactional
Spring註釋。
您完全困惑了我。當你說會話時,你的意思是你創建的一個jpa實體還是一個休眠會話?或者有時可能是一個,有時是另一個? –