一对多:一个小组有很多人,一个人属于一个小组。
这里不仅仅需要在 一 的那方添加Set集合,Set集合类型为 多 的那方,还有@OneToMany ,
还需要加上 @JoinColumn(name="groupId") ,不然的话 hibernate 会默认建一个多对多的表。
User.java
@Entity
@Table(name="t_user")
public class User {
private String name;
private int id;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Group.java
@Entity
@Table(name="t_group")
public class Group {
private Set<User>set=new HashSet<User>();
private String name;
private int id;
@OneToMany
@JoinColumn(name="groupId")
public Set<User> getSet() {
return set;
}
public void setSet(Set<User> set) {
this.set = set;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
还有xml方式的:
Group.java
public class Group {
private Set<User>set=new HashSet<User>();
private String name;
private int id;
public Set<User> getSet() {
return set;
}
public void setSet(Set<User> set) {
this.set = set;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
User.java
public class User {
private String name;
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Group.hbm.xml
set 表示是一个集合,键的列名是groupid,多 对应的类是com.wanhao.User
<class name="Group" table="t_group">
<id name="id">
<generator class="native"></generator>
</id>
<property name="name"></property>
<set name="users">
<key column="groupid"></key>
<one-to-many class="com.wanhao.User"></one-to-many>
</set>
</class>