Най-вероятно вашите обекти стават "мръсни" в същия момент, в който са заредени от базата данни, и Hibernate смята, че трябва да съхрани промените. Това се случва, ако вашите инструменти за достъп (методи get и set) не връщат точно същата стойност или препратка който беше зададен от Hibernate.
В нашия код това се случи със списъци, разработчиците създадоха нови екземпляри на списъци, защото не харесаха типа, който получиха в сетера.
Ако не искате да промените кода, променете съпоставянето на достъп до поле.
Можете също така да попречите на Hibernate да съхранява промените, като зададете FlushMode на никога в сесията, но това само скрива истинския проблем, който пак ще се появи в други ситуации и ще доведе до ненужни актуализации.