一对多的应用(在某一主表下增加子表记录)
来源:WEB开发资源联盟(http://cnpoint.com/)
作者:point
原文:一对多的应用(在某一主表下增加子表记录)(http://cnpoint.com/framwwork/2006/1211/content_4718.htm)
一对多的应用(在某一主表下增加子表记录) 主表customer,子表email,一个用户可以拥有若干个email,现在id为34的用户需要增加1条email记录,采用双向一对多技术,主控方在many方,有助于性能的改善,在one方和many方都要进行配置。具体实现代码如下:
(one方)customer.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"

http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Customer" table="CUSTOMER">
<id name="id" column="ID" type="int">
<generator class="native">
</generator>
</id>
<property name="username" column="USERNAME" type="string"/>
<property name="password" column="PASSWORD" type="string"/>
<property name="age" column="AGE" type="int"/>
<set name="email" table="email" inverse="true" cascade="all">
<key column="id" foreign-key="fk"/>
<one-to-many class="Email"/>
</set> </class>
</hibernate-mapping>
many方采用Set集合的形式存在于one方中<set ………… /set>,inverse=true表示控制权不在此处,cascade级联
--------------------------------------------------------------------
(one方)Customer.java
import java.util.HashSet;
import java.util.Set;
public class Customer {
private int id;
private String username;
private String password;
private int age;
//采用set作为容器存储子表的对象
private Set email = new HashSet();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Set getEmail() {
return email;
}
public void setEmail(Set email) {
this.email = email;
}
}
--------------------------------------------------------------------
(many方)email.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"

http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Email" table="EMAIL">
<id name="id" column="ID" type="int">
<generator class="native">
&nbs
[1] [2] [3] 下一页
进入问吧