我有以下情況。寫兩個線程寫同一個實體的不同字段
一個業務實體(BE)由2個線程異步提供的2個部分組成。 示例:我們的BE具有字段id和A,B,C - 全部位於數據庫中的一個表中。當實體存儲到數據庫中時,Id按順序生成。 B是唯一的字段,它在數據庫中存在約束。 Process1提供字段A和B. Process2提供字段B和C.因此,在兩個過程完成後,我們應該在表中填充所有列中的一行。
使這項工作成功的好方法是什麼?
什麼是現在做:
在每一個過程中,我們首先選擇從表中的所有值,其中B列中值是什麼,我們現在有。 (如果有的話 - 這意味着其他進程已保存它的一部分)。如果有什麼東西,它會在缺少的列上得到豐富,並持續不斷。如果什麼都沒有 - 我們只是堅持我們擁有的東西。但是當所有這些都完成時,可能會發生其他進程完成它的工作,並且當我們堅持我們的實體時,我們得到ConstraintViolationException並且hibernate將事務標記爲回滾。缺少的列仍然丟失。
沒有源代碼。沒有明確的具體問題。我得到螺旋讀你的問題。請澄清並至少在理論上證明問題。 – TheBlastOne