我嘗試使用多線程來嘗試持久化對象時遇到問題。使用多線程的JPA持久性
詳情:
假設我有其中有PaymentGroup
列表(一對多的關係)和PaymentGroup
(再次一對多的關係)包含CreditTransfer
列表的對象PaymentOrder
。
由於CreditTransfer
數量巨大(以萬盧比),我已經根據PaymentGroup
(基於一些業務邏輯) 和創建WORKER線程(一個線程每個PaymentGroup)形成PaymentOrder
對象和分組它在數據庫中提交。
問題是,每個工作線程正在創建一個PaymentOrder
(其中包含一組唯一的PaymentGroup
s)。
所有實體的主鍵都是自動生成的。
因此有三個表格,1.PAYMENT_ORDER_MASTER,2.PAYMENT_GROUPS,3.CREDIT_TRANSFERS,全部由一對多關係映射。
因爲,當第二線程試圖堅持其組中的數據庫,該框架試圖堅持同一PaymentOrder
,其前一個線程提交,交易失敗由於一些其他唯一字段約束(的PaymentOrder
的校驗和)。
理想的情況下它必須是1..n..m(PaymentOrder
- > PaymentGroup -->
CreditTransfer`)
我需要實現的是如果在數據庫中沒有的PaymentOrder
記項,表項時,它的存在,請勿在PAYMENT_ORDER_MASTER
中輸入,但只能在PAYMENT_GROUPS
和CREDIT_TRANSFERS
之間輸入。
我該如何克服這個問題,維護split-master-payment-order-using-groups邏輯和多線程?