다른 엔터티 B
에 대한 참조가있는 엔터티 A
을 업데이트/병합 할 때 문제가 있습니다. A
에는 엔티티에 대한 참조도 있습니다. C
.Entitymanager.flush 필드가 지워짐
도메인 개체에서 A
개체의 새 인스턴스를 만듭니다. 또한이 도메인 개체에서 나는 entityManager.getReference(<class>, <id>)
을 사용하여 B
과 C
을 얻기 위해 ID를 사용합니다. entityManager.merge
및 entityManager.flush()
으로 전화합니다. 지금까지 모두 양호하다. B
과 C
의 값은 A
에있다. 플러시 후 entityManager.refresh(A)
을 수행하면 B
이 지워지지 만 (null), C
은 여전히 존재합니다.
SQL 쿼리를 실행하여 업데이트 전에 값이 있는지 확인합니다. 플러시 후 B
으로 FK가 지워 지므로 새로 고침을 호출하면 FK가 발견됩니다.
여기서는 무엇을 찾아야할지 모르겠다. 내 엔티티 정의 방법과 관련하여 뭔가있을 수 있습니까? 지속성 - XML? 어떤 조언을 많이 주시면 감사하겠습니다!
편집 : B
의 값은 참조를 변경하지 않은 경우에만 지워집니다. B
의 참조를 B'
으로 변경하면 올바르게 업데이트됩니다.