Tôi đến đây để tìm kiếm câu trả lời tương tự. Hóa ra vấn đề là JPA không biết rằng đối tượng của bạn bị bẩn. Điều này đã được giải quyết bằng cách triển khai các phương thức equals () / hashcode () trên các đối tượng phức tạp này. Trong ví dụ của bạn, hãy triển khai bằng và mã băm cho ProjectProperty
Khi điều đó được thực hiện xong, JPA có thể xác định thông qua các phương pháp này rằng đối tượng bên dưới bị bẩn và chuyển đổi và tồn tại.