I have the following case where attachDirty saveOrUpdate()
always tries to persist the entities when the transactional annotated method is called in burst.
Is there a way to avoid this primary key constraint violation exception? I thought that saveOrUpdate()
would persist if the entity is not yet created and update it otherwise.
I used this ..orUpdate()
instead of persist()
as a way to handle these bursts.
There is no data corruption actually. Because the first saveOrUpdate()
does save 1 record for each entity as desired. The other persists are rejected by the database because of the primary key constraint violation.
I researched about optimistic and pessimistic locking. I understood that these work after fetching an already existing record. Here the entities are new, not existing.
How to approach this in a better way?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…