我有两个表格USERPROFILE
,另一个表格是SKILLS。
两个表都包含数据。一个用户可以拥有许多技能,一个技能可能属于许多用户。 我应该如何保持他们之间的关系..?
我在UserProfile
表中添加了与一对多技能相关的关系。
但是当我将技能对象分配给userprofile
并尝试保存它时,获得异常。
在另一种情况下,如果我创建新的技能对象并分配给userprofile
并保存userprofile
对象,则保存它。但是为同一技能生成了新的id。
我不想要这个,我想保持两个表之间的关系而不生成新的ID。
答案 0 :(得分:2)
你应该使用Skills
和UserProfile
的映射表,它只保留两个表的id
它将帮助您检索用户的所有技能。还有所有拥有该技能的用户
它的结构应该是这样的
user_skills
----------------------
ID | skill_id | user_id
答案 1 :(得分:0)
我认为拥有一个包含字段user_id&的用户技能映射表应该会更好。 skill_id也。每次用户添加技能时,请在映射表中输入,以便将来更容易使用此数据
答案 2 :(得分:0)
联接表是必要的(例如,skills_per_user)
使用Hibernate,@OneToMany
使用@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;
}
和连接表skill_per_user
定义为
skill_per_user
---------------------
user_id | skill_id