您的位置:首页 > 其它

Hibernate关系映射(9)_多对一双向关联

2010-10-16 22:11 471 查看
一.Annotation方式:

 

User与Group是多对一的关系。在User持有Group的引用,同时Group也持有User集合的引用

/*
* Group.java
*/
@Entity
@Table(name="t_group")
public class Group {
private int id;
private String name;
private Set<User> users = new HashSet<User>();

@OneToMany(mappedBy="group")
public Set<User> getUsers() {
return users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
@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;
}
}


/*
* User.java
*/
@Entity
@Table(name="t_user")
public class User {
private int id;
private String name;
private Group group;

@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}

@ManyToOne
public Group getGroup() {
return group;
}

public void setGroup(Group group) {
this.group = group;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}


[b]二.XML方式:(以上程序去掉注解)[/b]

在Group.hbm.xml中配置映射关系:

<hibernate-mapping>
<class name="com.szy.hibernate.model.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.szy.hibernate.model.User"/>
</set>
</class>

</hibernate-mapping>


在User.hbm.xml中配置映射关系:

<hibernate-mapping>
<class name="com.szy.hibernate.model.User" table="t_user">
<id name="id">
<generator class="native"></generator>
</id>
<property name="name"></property>

<many-to-one name="group" column="groupId"></many-to-one>

</class>
</hibernate-mapping>


**注意:one2many中的<key>中column属性与many2one中column属性要设一至,否则会出现两个参考字段。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: