2010-04-29 5 views
2

내가 상처 입었다. 나는 기본적으로 사용자 엔티티와 클럽 엔티티 (userClubs라는 조인 테이블을 통해) 사이에 양방향 많은 매핑을 가지고있다. 이제는 칼럼을 포함하고 싶다. user.getClubs()를 호출 할 때 어떤 수준의 액세스 권한을 가질 수 있도록 userClub에서 역할을 나타냅니다. hibernate를 사용하여이를 수행하는 영리한 방법이 있습니까? 아니면 데이터베이스 구조를 다시 생각해야합니까? (바로 지금이 글을 읽고 나!!) 어떤 도움을 주셔서 감사합니다Hibernate 양방향 어드바이스 많은 매핑 조언! 누구든지 나를 도울 수 있다면

user.hbm.xml이 보이는 activity.hbm.xml 부분

<set name="members" inverse="true" table="userClubs" cascade="save-update"> 
     <key column="activity_ID"/> 
     <many-to-many column="user_ID" 
      class="com.ActivityGB.client.domain.User"/> 
</set> 

<set name="clubs" table="userClubs" cascade="save-update"> 
     <key column="user_ID"/> 
     <many-to-many column="activity_ID" 
      class="com.ActivityGB.client.domain.Activity"/> 
</set> 

같은 비트 현재 userClubs 테이블에는 다음 필드가 있습니다. id | user_ID | activity_ID

거기에 포함하고 싶습니다. id | user_ID | activity_ID | 역할

양쪽에 역할에 액세스 할 수 ...

답변

1

가장 쉬운 방법은 조인 테이블에서 엔티티를 생성하는 것입니다.

클럽 및 사용자 엔티티에 대한 두 개의 외래 키를 ID (< composite-id > 사용)로 사용할 수 있지만 기술적 ID 열을 추가하고 외래 키에 대한 고유 제한을 설정하는 것이 좋습니다 그렇지 않은 경우 클럽이나 사용자를 저장하면 캐스케이드가 작동하지 않습니다. 자세한 내용은 여기 : http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-declaration-compositeid).

새 엔티티 UserClub의 이름을 지정하면 User to UserClub과 Club에서 UserClub, UserClub에서 UserClub, UserClub에서 User로 일대 다 필요합니다.

자바 코드에서 수행 할 리팩토링이 있지만 데이터베이스를 변경할 필요는 없습니다 (id 및 role 열 추가 제외).

+0

매력을 느꼈으 니 신속한 답변을 부탁드립니다. Thierry :) – Rob

관련 문제