亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

讓應用程序管理的事務在 JPA 和 WebSphere 上工作時遇到問題

讓應用程序管理的事務在 JPA 和 WebSphere 上工作時遇到問題

慕神8447489 2022-05-12 16:01:26
我是第一次在 WebSphere Commerce 7 環境中使用 JPA。我能夠使用容器管理的持久性使其一切正常,因此它可以自行保存對象。問題是,我需要確保在事務存在的邏輯結束之前將數據保存到數據庫中,因為如果數據未提交到最后可能會引入競爭條件的更多邏輯數據庫之前。如果我在我調用的點添加調試點entityManager.persist,并且在我調用的點之后entityManager.close,我可以查詢數據庫并且在那里看不到任何數據。但是,一旦我讓邏輯運行并到達課程的末尾,數據就會顯示出來。所以我想也許我需要嘗試應用程序管理的持久性。當我讀到如何做到這一點時,我感到很困惑,因為看起來我已經無意中以這種方式構建了我的邏輯,但它仍然不允許我管理事務。而且我嘗試的所有操作都會導致一些異常,尤其是當我嘗試調用getTransaction.commit()或任何類似的手動提交時。所以這就是我使用 CMT 所做的工作(或者至少我認為它是 CMT)然后我創建了一個 JpaConnectionHelper,我希望將它做成可以傳遞值的東西,并讓它根據我傳入的字符串為我創建一個特定的持久性單元。正因為如此,我似乎在做邏輯似乎已經是應用程序管理事務所需的邏輯類型。為了完成這項工作,我必須調用Persistence.createEntityManagerFactory(persistenceUnitName)以創建 An,EntityManagerFactory因為我將 persistenceUnitName 傳遞給類。我讀到的東西告訴我,這意味著我將進行應用程序管理——但也許我在這方面錯了。無論如何,該課程的核心是:將這個對象傳遞給其他類時,getter 讓我可以訪問 Entitymanager - 也許這是我的錯誤,試圖創建這個幫助器類,而不是僅僅創建更接近我保存數據的位置的持久性邏輯?然后我繼續創建一堆 DAO,它們返回一個對象,該對象具有要映射到我的數據庫的所有持久性注釋。我將 JpaConnectionHelper 的實例傳遞給每個 DAO,所以現在它們都可以訪問 EntityManager 和要保存的對象。我還為所有 DAO 提供了一個.persistDao()方法,該方法將使用 EntityManager 來調用.persist()已創建的對象。所以現在我基本上有了一個 DAO,其中包含我要保存的填充對象和一個 EntityManager。所以我在DAO上調用了persist方法,它保存得很好。因此,我想嘗試使用應用程序管理的事務來實現這一點。我首先嘗試entityManager.flush()在persist 方法調用之后調用,但這沒有任何作用(也不例外)。然后我嘗試entityManager.getTransaction.commit()在同一個地方添加,這會引發您可能期望的異常:You cannot access the EntityTransaction when using managed transactions.如果我錯了,現在糾正我,但這不表明我正在使用 CMT 嗎?EntityManagerFactory如果是這樣,當我不為我的or使用注射時,為什么我能夠做到Entitymanager?順便說一句,我嘗試了有和沒有第一次調用的版本joinTransaction()所以我閱讀了更多,發現我可能需要注入一個 UserTransaction,所以我嘗試將它添加到 JPAConnectionHelper(EntityManager 實例所在的位置)
查看完整描述

1 回答

?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

我找到了一個解決方案,可以讓我專門在 WebSphere 環境中使用以下方式訪問事務:

TransactionManager.commit();

似乎此方法能夠以我沒有嘗試過的方式訪問 UserTransaction 上下文。所以我敢肯定,如果需要,我現在也可以這樣做,但是,如果這門課為我做,為什么不直接使用它


查看完整回答
反對 回復 2022-05-12
  • 1 回答
  • 0 關注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號