2012-03-31 4 views
3

나는 Hibernate에서 간단한 JoinTable 연산을 실행하려고하고있다. "Person"이라는 엔티티를 나타내는 테이블 하나가 있습니다. 사회 보장 번호를 나타내는 다른 테이블이 있습니다 (예를 들어). 사회 보장 번호 (String) (VARCHAR2)를 PersonEntity의 속성으로 사용하고 싶습니다. PersonEntity는 다음 코드 없이는 잘 작동합니다. 여기 내가하려는 일이 있습니다.엔티티를 사용하지 않고 Hibernate Simple JoinTable

PERSON_ID, SSN 

모든 코드없이 잘 작동 :

@JoinTable(name = "PERSON_ID_X_SSN", 
       joinColumns = {@JoinColumn(name = "PERSON_ID")}) 
    @Column(name="SSN", nullable=false, updatable=false) 
    private String social; 

PERSON_ID_X_SSN 테이블이 간단합니다. 최대한 빨리 전체 엔티티에 추가하면 null입니다. 나는 PERSON_ID_X_SSN을위한 별도의 엔티티를 만들지 않기를 원합니다 ... 도와주세요! 감사합니다

답변

3

@JoinTable은 엔티티 간의 관계를 유지하는 데 사용되는 테이블을 지정하기위한 것입니다.

이 경우 엔터티 간에는 관계가 없지만 두 테이블에 유지되어야하는 엔터티는 하나입니다. @SecondaryTable은 서버가 이러한 목적으로 사용하는 주석입니다. 아이디어는 엔티티에 대해 보조 테이블 (또는 @SecondaryTables를 통해 하나 이상의 테이블)을 지정하고 기본 이외의 테이블을 사용하여 특성을 유지해야하는 경우 @Column 주석의 테이블 이름을 명시 적으로 언급하는 것입니다. 다음과 같은 귀하의 경우 뭔가에

작동합니다 :

@Entity 
@Table(name="CUSTOMER") 
@SecondaryTable(
    name="PERSON_ID_X_SSN", 
    [email protected](name="PERSON_ID")) 
public class Person { 
    @Column(table="PERSON_ID_X_SSN", name="SSN") 
    private String social; 
    ... 
} 

}

관련 문제