Like for instance you are merging Patients from serverA to B which a new server with Patients. However, data comes with primary keys and foreign keys set yet we use key Generator class of hibernate. Ok I tried as possible to set all these IDs like patientId to null to tell hibernate that this is a new Object. However, there some culprit id values that I could be missing to set to null which make Hibernate think that we are updating it ending up with StaleStateException
Recommended solution
Check the Hibernate logs to see which row Hibernate is trying to updated or retrieve but I don’t know how to turn the Hibernate logging
You probably need a unit test to better debug the issue.
Append org.hibernate.SQL:debug,org.hibernate.type:trace to the log.level global property, keep in mind it gets very verbose, might be tricky to locate the actual area in the logs you need to look at, this is why a unit test would be nice to have.
Hopefully you figure it out, the default value is org.openmrs.api:info and you needed to add org.hibernate.SQL:debug,org.hibernate.type:trace to the value to become org.openmrs.api:info,org.hibernate.SQL:debug,org.hibernate.type:trace