외국

2017-10-10 4 views
0

OneToMany 관계에 대한 Envers 감사 테이블에 빈 나는 다음과 같은 관계 및 외래 키가 새 개정 후의 항상 감사 테이블에 비어있는 키외국

@ManyToOne 
@Audited(targetAuditMode=RelationshipTargetAuditMode.NOT_AUDITED) 
@JoinColumn(name="mail_iid") 
@private Mail mail; 

...

@OneToMany(cascade=Cascade.ALL, orphan = true, fetch= fetchType.LAZY) 
@JoinColumn(name="mail_iid") 
private List<Attachments> attachments; 

새 레지스터를 삽입 한 후 원본 테이블에는 iid가 있지만 개정 본은 없습니다.

누군가이 문제에 대해 알고 있습니다.

답변

0

양방향 관계를 제대로 관리하지 못하는 한 가지 방법이 있습니다.

은 당신이 결코 Attachments 기관에 새로 만든 Mail 개체를 할당 Attachments#setMail를 호출하지 않고 대신 단순히 수집하여 Mail 엔티티 폭포에 Attachments 개체를 추가하는 의심.

이러한 유형의 양방향 관계 유지 보수가 잘못되어 특히 엔티티 인스턴스가 1LC에서 검사되고 데이터베이스에서 절대 새로 고쳐지지 않으면 특히 잘못된 결과가 발생할 수 있습니다. 정확하게 null 인 감사 테이블을 mail_iid 필드에 표시하는 것입니다.

당신이 예상 한 것처럼 귀하의 코드는 당신은 당신의 감사 테이블에 채워지 mail_iid하게 될 겁니다, 당신은이 방법을 수행 할 때 관계의 양쪽이 제대로

// setup bidirectional mappings 
attachments.setMail(mail); 
mail.getAttachments().add(attachments); 

를 설정 얻을 있는지 확인해야합니다 또한 1LC에 이미로드 된 개체의 개체 그래프의 캐시 된 인스턴스를 탐색 할 때 발생하는 문제를 방지합니다.