0

두 테이블 하나는 USERPROFILE이고 다른 하나는 숙련도입니다.두 테이블 간의 관계를 유지하는 방법?

두 테이블 모두 데이터를 포함합니다. 한 사용자는 많은 기술을 보유 할 수 있으며 하나의 기술은 많은 사용자에게 속할 수 있습니다. 그들 간의 관계를 어떻게 유지해야합니까?

나는 기술이있는 일대일로 UserProfile 테이블에 관계를 추가했습니다. 그러나 스킬 개체를 userprofile에 할당하고 저장하려고하면 예외가 발생합니다. 또 다른 경우에 새로운 기술 개체를 만들고 userprofile에 할당하고 userprofile 개체를 저장하면 저장됩니다. 그러나 동일한 기술에 대해 새 ID가 생성됩니다.

나는 이것을 원하지 않는다. 새로운 ID를 생성하지 않고 두 테이블 사이의 관계를 유지하려고한다.

답변

0

나는 user_id & skill_id 필드가있는 사용자 스킬 매핑 테이블을 가지고 있어야한다고 생각합니다. 당신이 SkillsUserProfile에 대한 매핑 테이블을 사용한다 미래

2

이 데이터를 쉽게 사용할 수 있도록 할 때마다 사용자가 기술을 추가 할 때, 어떤 두 테이블에서 유일한 ID를 유지합니다 매핑 테이블에 그것을 입력

사용자의 모든 기술을 익히는 데 도움이됩니다. 또한 모든 사용자는 지식을 가진

그것의 구조는 표가 최대 절전 모드로
@JoinTable

class UserProfile { 
    @Id 
    private int user_id; 

    @OneToMany 
    @JoinTable(name="skills_per_user", 
    joinColumns={@JoinColumn(name="user_id")}, 
    inverseJoinColumns={@JoinColumn(name="id_skill")} 
) 
    private Set<Skill> skills = new HashSet<Skill>(); 
} 

class Skill { 
    @Id 
    private int skill_id; 
} 

으로 @OneToMany를 사용 (예. skills_per_user) 필요에 가입 같은

user_skills 
---------------------- 
ID | skill_id | user_id 
0

는 A해야한다 조인 테이블 skill_per_user

skill_per_user 
--------------------- 
user_id | skill_id 
로 정의됩니다.
관련 문제