2014-04-15 4 views
0

다른 엔터티 B에 대한 참조가있는 엔터티 A을 업데이트/병합 할 때 문제가 있습니다. A에는 엔티티에 대한 참조도 있습니다. C.Entitymanager.flush 필드가 지워짐

도메인 개체에서 A 개체의 새 인스턴스를 만듭니다. 또한이 도메인 개체에서 나는 entityManager.getReference(<class>, <id>)을 사용하여 BC을 얻기 위해 ID를 사용합니다. entityManager.mergeentityManager.flush()으로 전화합니다. 지금까지 모두 양호하다. BC의 값은 A에있다. 플러시 후 entityManager.refresh(A)을 수행하면 B이 지워지지 만 (null), C은 여전히 ​​존재합니다.

SQL 쿼리를 실행하여 업데이트 전에 값이 있는지 확인합니다. 플러시 후 B으로 FK가 지워 지므로 새로 고침을 호출하면 FK가 발견됩니다.

여기서는 무엇을 찾아야할지 모르겠다. 내 엔티티 정의 방법과 관련하여 뭔가있을 수 있습니까? 지속성 - XML? 어떤 조언을 많이 주시면 감사하겠습니다!

편집 : B의 값은 참조를 변경하지 않은 경우에만 지워집니다. B의 참조를 B'으로 변경하면 올바르게 업데이트됩니다.

답변

0

문제가 발생한 위치의 전체 컨텍스트가 표시되지 않았습니다. B에 대한 참조가있는 엔터티 A에는 외부 키 필드도 있습니다. 이 외래 키 필드는 항상 null이므로 엔터티 참조를 설정해도 아무 효과가 없습니다.