2011-03-08 6 views
1

I가 매핑 엔티티 일대일 다음 코드에 따라 A : 난 그냥 '사이트 ID 값으로 MyEntity 항목을 저장하기 시작해야한다는 것을 들었다최대 절전 모드 옵션에 가입

@Entity 
@Table(name = "my_entity") 
public class MyEntity 
{ 
    ... 
    @OneToOne 
    @JoinColumn(name = "site_id") 
    private Site site; 
    ... 
} 

'이 사이트 테이블 내에 존재하지 않을 수 있습니다. 여전히 'site_id'값을 저장해야하지만 Site 엔티티와 일치하지 않습니다.

내가 생각할 수있는 유일한 점은 사이트 테이블에서 일대일/조인을 매핑하지 않는 동일한 테이블에 매핑 된 두 번째 유형의 엔티티를 만드는 것입니다.

동일한 테이블에 대해 두 번째 매핑 된 개체를 만들지 않고이 작업을 수행 할 수있는 방법이 있습니까?

감사합니다.

답변

3

이것은 매우 나쁜 디자인입니다. 외래 키는 외래 키 여야하며 존재하지 않는 행을 가리 키지 않아야합니다. 나는 데이터/디자인을 고칠 것이다.

당신은 정말 정말의 NOTFOUND 주석이 here 설명 사용할 수없는 경우 : 예상 관련된 요소가 데이터베이스에없는 때문에 협회 컬럼 (잘못된 ID를 기본적으로

, Hibernate는 협회를 해결할 수), Hibernate에 의해 예외가 발생한다. 이는 레거시 스키마와 잘못 유지 된 스키마에 대해 불편할 수 있습니다. @NotFound 어노테이션을 사용하여 예외를 발생시키지 않고 Hibernate가 그런 요소를 무시하도록 요청할 수있다. 이 주석은 @OneToOne (FK 포함), @ManyToOne, @OneToMany 또는 @ManyToMany 연관에 사용할 수 있습니다.

+0

나는 동의하지만, (덕분에 주석을 시도해 볼 수 있습니다. – pstanton

+0

작품은 100 % – pstanton