一个人可以有多个邮箱 //----------------------------------------------Person package huhai.or.pojo; import java.util.Set; public class Person { private String idCard; private Set emails; public String getIdCard() { return idCard; } public void setIdCard(String idCard) { this.idCard = idCard; } public Set getEmails() { return emails; } public void setEmails(Set emails) { this.emails = emails; } } //----------------------------------------------Email package huhai.or.pojo; public class Email { private long id; private String uid; private Person person; private String emailAddress; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getEmailAddress() { return emailAddress; } public void setEmailAddress(String emailAddress) { this.emailAddress = emailAddress; } public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; } public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; } } <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <hibernate-mapping> <class name="huhai.or.pojo.Person" table="PERSON"> <id name="idCard" column="IDCARD" length="32" > <generator class="uuid.hex"> </generator> </id> <set name="emails" table="EMAIL" cascade="all" inverse="true"> <key column="uid" ></key><!—此处uid为被动方中字段--> <one-to-many class="huhai.or.pojo.Email"/> </set> </class> </hibernate-mapping> //----------------------------------------------Email.hbm.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <hibernate-mapping> <class name="huhai.or.pojo.Email" table="EMAIL"> <id name="id"> <generator class="increment"></generator> </id> <property name="emailAddress" column="EMAILADDRESS"></property> <many-to-one name="person" class="huhai.or.pojo.Person" column="uid" cascade="none"><!—此处uid为被动方中字段--> </many-to-one> </class> </hibernate-mapping> 测试代码 //------------------------------------------------EmailTest package huhai.or.test; import huhai.or.pojo.Email; import huhai.or.pojo.Person; import huhai.util.HibernateUtil; import java.util.HashSet; import java.util.Set; import org.hibernate.Session; import org.hibernate.Transaction; public class EmailTest { /** * @param args */ public static void main(String[] args) { addEmail(new String[]{"123@126.com","124@1263.com"}); } private static void addEmail(String[] emailList) { Person person=new Person(); Set<Email> emails=new HashSet<Email>(); for(String emailAddress:emailList) { Email email=new Email(); email.setPerson(person); email.setEmailAddress(emailAddress); emails.add(email); } person.setEmails(emails); try { Session session=HibernateUtil.getCurrentSession(); Transaction tran=session.beginTransaction(); session.saveOrUpdate(person);//只需保存person便可级联保存email /*保存了person才可保存email for(Email email: emails) { session.saveOrUpdate(email); } */ tran.commit(); } catch(Exception ex) { System.err.println(ex.getMessage()); } finally { HibernateUtil.getSessionFactory().close(); } } }