我是新来的冬眠,所以我真的不知道我是否正确地做到了这一点。这是我的情况。我有一个人和一个组,一个人有一个ID,并且必须属于一个也有ID的组。该人可以属于多个群体。组具有ID和名称。我想创建3个表,一个Person表和一个Group表,然后有一个GroupMap表,它将person.id映射到group.id(它们都是主键和外键)。这是我到目前为止所拥有的。我不知道我是在正确的轨道上还是做对了。我怎么能制作那些外键?或者我应该以不同的方式设置表格。
@Entity
public class Person implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
}
@Entity
public class Group implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Basic(optional = false)
@Column(unique = true)
private String name;
}
@Entity
public class GroupMap{
@EmbeddedId
private GroupPerson ids;
}
@Embeddable
class GroupPerson implements Serializable {
private Long person_id; //SHOULD BE FOREIGN KEY FROM person.id
private Long group_id; //SHOULD BE FOREIGN KEY FROM group.id
}
答案 0 :(得分:1)
除非你打算为它添加更多属性,否则GroupMap本身就需要成为一个实体并不是真正的原因。
@Entity
public class Person implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
@ManyToMany(mappedBy="persons")
private List<Group> groups;
}
@Entity
public class Group implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Basic(optional = false)
@Column(unique = true)
private String name;
@ManyToMany()
@JoinTable(name="group_map",
joinColumns=@JoinColumn(name="GROUP_ID",referencedColumnName="ID"),
inverseJoinColumns=@JoinColumn(name="PERSON_ID", referencedColumnName="ID"))
private List<Person> persons;
}
全部完成!