1

我目前在無狀態會話中執行事務有問題。@Transactional裏面的無狀態會話

在服務層上,我定義了使用@Transactional註釋(因爲方法需要在一個事務中)所需的事務。 在該方法內部,我創建了新實體Car。 不過我也有襯墊的方法無狀態會話(其履行完成)內定製transtaction這樣

StatelessSession session = getSessionFactory().openStatelessSession(); 
Transaction transaction = session.beginTransaction() 

// create and setup CarRequirements entity 

transaction.commit; 

問題創造的是,實體CarRequirements有外鍵實體Car。因此,當我嘗試提交下層事務時會發生異常,因爲顯然Car實體尚未提交到數據庫。

有沒有辦法推遲下層事務的提交或強制提交Car實體?

+0

這些實體如何映射? – davidxxx

+0

@davidxxx CarRequirement有引用汽車主鍵的外鍵 – toucheqt

回答

2

任你定義CarRequirements和汽車(級聯) 之間的關係,或者你必須首先節省了汽車,然後保存CareRequirements

+0

級聯對我來說不是一種選擇,因爲這些實體已經有關係(CarRequirement有引用Car的主鍵的外鍵).. 至於其他建議,我我首先保存了Car,但是因爲它在事務性註釋中,所以比在無狀態會話內提交的CarRequirement更遲。 現在我通過將方法拆分爲兩個來解決它。一個由事務性註釋標記並創建並提交的車,另一個在無狀態會話中創建CarRequirements實體。它以這種方式工作,但我不喜歡把它分開。 – toucheqt