2012-11-06 1 views
1

id가 @OneToOne 인 두 개의 테이블이 있습니다. 그래서 두 번째 id가 테이블 의 존재하지 않는 행을 참조하면이 행을 skyp하기 위해 최대 절전 모드라고 말할 수 있습니까? 대신 오류가 있습니다. 내가 존재하지 않는 idarea와 사용자의 행이있는 경우@OneToOne과 FetchType.EAGER에 의해 최대 절전 모드로 왼쪽으로 왼쪽

@Entity 
@Table(name="user") 
public class User implements Serializable { 

private Long idUser; 
private Area area; 

//...other get and setter 

@OneToOne(fetch=FetchType.EAGER) 
@JoinColumn(name="idarea") 
public Area getArea() { 
return area; 
} 
} 

지금, 어떻게 사용자, 를 건너 뛸 수 있습니다 또는 나는 좌 가입 할 수 있습니까?

답변

3

이 상황은 외래 키 제약 조건이있는 잘 정의 된 스키마에서 발생하지 않아야합니다. 사용자가 null이 아닌 idarea이 있으면이 ID는 영역 테이블의 기존 ID를 참조해야합니다. 데이터를 처리하고 외래 키 제약 조건을 추가하여 이런 일이 발생하지 않도록합니다.

아주 좋은 이유로 불가능하다면 @NotFound(NotFoundAction.IGNORE) 주석을 사용할 수 있습니다. 그러나 Hibernate는 ID가 실제 사용자인지 또는 존재하지 않는 사용자인지를 확인해야하기 때문에 성능 비용이 발생합니다.

+0

당신은 열심이에요. 나는 열망하는 것을 선언 할 때 문제가 있습니다. 문제가 idarea가 아닌지 궁금 해서요. 이 방법으로 확인합니다. Txx – Shinigami

+0

'@ NotFound'는 저에게 새로운 것이 었습니다 ... 감사합니다! – amram99