Ich bin hierher gekommen, um nach denselben Antworten zu suchen. Es stellt sich heraus, dass das Problem darin besteht, dass JPA nicht weiß, dass Ihr Objekt schmutzig ist. Dies wurde durch die Implementierung von equals()/hashcode()-Methoden für diese komplexen Objekte gelöst. Implementieren Sie in Ihrem Beispiel Gleichheit und Hashcode für ProjectProperty
Sobald dies erledigt ist, kann JPA über diese Methoden erkennen, dass das zugrunde liegende Objekt unsauber ist und konvertiert und persistiert.