Java 将2个主键休眠为外键
我刚开始冬眠,所以不知道我是否做得对。这是我的情况。我有一个人和一个团体,一个人有一个ID并且必须属于一个也有ID的团体。这个人可以属于多个团体。组有一个ID和一个名称。我想创建3个表,一个Person表和一个Group表,然后创建一个GroupMap表,将Person.id映射到Group.id(主键和外键)。这是我到目前为止所拥有的。我不知道我是否在正确的轨道上,或者做得对。我怎样才能做这些外键?或者我应该以不同的方式设置我的桌子Java 将2个主键休眠为外键,java,mysql,sql,hibernate,jpa,Java,Mysql,Sql,Hibernate,Jpa,我刚开始冬眠,所以不知道我是否做得对。这是我的情况。我有一个人和一个团体,一个人有一个ID并且必须属于一个也有ID的团体。这个人可以属于多个团体。组有一个ID和一个名称。我想创建3个表,一个Person表和一个Group表,然后创建一个GroupMap表,将Person.id映射到Group.id(主键和外键)。这是我到目前为止所拥有的。我不知道我是否在正确的轨道上,或者做得对。我怎样才能做这些外键?或者我应该以不同的方式设置我的桌子 @Entity public class Person im
@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
}
除非您计划向GroupMap添加更多属性,否则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;
}
@实体
公共类Person实现可序列化的{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私人长id;
私有字符串名称;
@许多人(mappedBy=“个人”)
私人名单组;
}
@实体
公共类组实现可序列化{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私人长id;
@基本(可选=假)
@列(唯一=真)
私有字符串名称;
@许多
@JoinTable(name=“group\u map”,
joinColumns=@JoinColumn(name=“GROUP\u ID”,referencedColumnName=“ID”),
inverseJoinColumns=@JoinColumn(name=“PERSON\u ID”,referencedColumnName=“ID”))
私人名单人员;
}
全部完成