我尝试使用多线程来尝试持久化对象时遇到问题。使用多线程的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逻辑和多线程?