2013-03-11 2 views
2

나는 다음 (매우 인위적인 예) 할 노력하고있어 : 내가 두 테이블 내가했습니다하는 다 대다 관계를 형성한다 & B가최대 절전 모드 (상호 참조 테이블에 매핑)

을 매핑 테이블 A_B가 생성되었습니다. 그런 다음 매핑 테이블 A_B와 일대 다 관계를 형성하는 테이블 C가 있습니다.

tableA 
------ 
a_id [pk] 

다음

tableB 
------ 
b_id [pk] 

다음

tableA_B 
------- 
a_id [pk] 
b_id [pk] 

다음

tableC 
------ 
c_id [pk] 

다음

tableC_AB 
--------- 
c_id [pk] 
a_id [pk] 
b_id [pk] 

그래서 Hibernate에서 나는 A의 엔티티를 생성, B & C ... 다음

ClassA { 
    .... 
    @JoinTable(
     name="A_B", 
     joinColumns={@JoinColumn(name="a_id")}, 
     inverseJoinColumns={@JoinColumn(name="b_id")} 
    ) 
    @ManyToMany(cascade = {CascadeType.ALL}) 
    private Set<B> bset = new HashSet<B>(); 
} 

(역 관계)

ClassB { 
    @ManyToMany(mappedBy="bset") 
    private Set<A> subjects = new HashSet<A>(); 
} 

이 첫 번째 매핑 A_B를 생성하지만 잘 모르겠어요 최대 절전 모드에서 매핑 C_AB을 만드는 방법. 나는 A_B에 대한 엔티티조차 없다 (데이터베이스에만 존재 함). 그래서 어떻게해야 하는가?

도움을 주시면 감사하겠습니다. I는 싶습니다 "

건배

JLove

답변

0

독립 협회// 링크 엔티티 클래스에 참여하는 대신 암시 대다 표로 표기 것을 제안한다. 실제 시간에는 생성 된 시간, 생성자, 계약 및 고용 계약 등과 같은 추가 필드가없는 조인 된 테이블이 없기 때문입니다.

  • tableA_B이 독립적 인 개체로 매핑되어야하고 두 가지가 서로 연결되면 몇 가지 추가 필드가 있어야합니다 있습니다 :

    은 그래서 의미한다.

  • tableC_AB도 독립적 인 엔티티에 매핑되어야합니다.
  • 우리는 collectiion 필드를 찾고 싶을 때 HQL에 의해 collectiion 필드를 찾아서 가져올 수 있습니다.
  • 은 다 대다 bugy하고 관련 테이블 추가 필드를 가질 수 있지만 답장을
+0

감사해야 ... 난 당신이 제대로 대답을 이해하고있어 경우에 나는 요청할 수 있습니다. (현재 가지고있는) 매핑 테이블을 사용하는 대신 관계를 모델링 할 새로운 엔티티를 생성해야한다고 제안합니다.이 엔티티는 매핑 엔티티가 아닙니다. 이미 ManyToMany를 사용하고있는 것처럼 말입니다. 알다시피, 내 테이블은 실제로 매핑입니다 ... 나는 추가 필드에 대한 필요가 없습니다. – JLove