2012-04-22 3 views
0

다음 표가 있습니다. 태그, 직원, 위치. 직원 및 위치에 더 많은 태그가있을 수 있습니다. 이러한 관계에 대한 새 테이블을 생성하는 것이 가장 좋습니다 : employee_tag 및 location_tag.JPA 새 테이블의 ManyToOne

JPA를 사용하여 어떻게 수행합니까? 지금은이있어 : Employee 클래스 :

@OneToMany() 
@JoinTable(name="employee_tag", joinColumns={ 
    @JoinColumn(name="ID_employee", referencedColumnName="ID") 
}, inverseJoinColumns={ 
    @JoinColumn(name="ID_tag", referencedColumnName="ID") 
}) 
private Collection<Tag> tags; 

태그 클래스 :

@ManyToOne() 
private Employee employee; 

그것은 새 테이블 이름 employee_tag을 만들지 만 태그가 여전히 열 EMPLOYEE_ID을 가지고 있습니다. 태그를이 테이블에 연결하려면 어떻게합니까?

+1

참조 hibernate annotations doc 살펴 http://stackoverflow.com/questions/5165743/spring-roo-hibernate-를 타고 one-to-many-relation-creates-additional-table – axtavt

+0

좋아, 그럼 내가 원하는 것은 거의 기본이다. 그러나 여전히 태그 테이블에 employee_ID가 있습니다. – Klaasvaak

답변

1

단방향 일대 다 연관이 필요한 경우 태그 클래스에 직원 연결을 넣지 않아도되므로 Employee 클래스에서 연결을 선언해야합니다.

@Entity 
public class Employee { 
    @OneToMany() 
    @JoinTable(name="employee_tag", joinColumns={ 
    @JoinColumn(name="ID_employee", referencedColumnName="ID") 
    }, inverseJoinColumns={ 
    @JoinColumn(name="ID_tag", referencedColumnName="ID") 
    }) 
    public Collection<Tag> tags; 
    ... 
} 

@Entity 
public class Tag {  
    ... 
} 

그렇지 않으면 다음과 같이 양방향 연관을 수행 할 수 있습니다

@Entity 
public class Employee { 
    @OneToMany(mappedBy="troop") 
    public Collection<Tag> tags; 
    ... 
} 

@Entity 
public class Tag { 
    @ManyToOne 
    @JoinColumn(name="employee_fk") 
    public Employee employee; 
    ... 
} 

관련 문제