Jag kom hit och letade efter samma svar. Det visar sig att problemet är att JPA inte vet att ditt föremål är smutsigt. Detta löstes genom att implementera equals()/hashcode()-metoder på detta komplexa objekt. I ditt exempel implementerar du lika och hashkod för ProjectProperty
När det är gjort kan JPA via dessa metoder identifiera att det underliggande objektet är smutsigt och omvandlas och kvarstår.