gpt4 book ai didi

java - Hibernate 2 主键作为外键

转载 作者:行者123 更新时间:2023-11-29 13:06:14 32 4
gpt4 key购买 nike

我是 hibernate 新手,所以不知道我是否正确执行此操作。这是我的情况。我有一个人和一个组,一个人有一个 ID,并且必须属于一个也有 ID 的组。该人可以属于多个组。一个组有一个 ID 和一个名称。我正在考虑创建 3 个表,一个 Person 表和一个 Group 表,然后创建一个 GroupMap 表,将 person.id 映射到 group.id (这既是主键又是外键)。这是我到目前为止所拥有的。我不知道我是否走在正确的轨道上或做得是否正确。我怎样才能制作这些外键?或者我应该以不同的方式设置我的 table 。

@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 需要单独成为一个实体,除非您计划向其添加更多属性。

@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;
}

全部完成!

关于java - Hibernate 2 主键作为外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22676191/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com