双向一对多映射

1. 环境
Winxpsp2、sqlserver2000、eclipse3.2、jdk1.5、myeclipse5.0、hibernate3.1。
2. 表Person
Id  int  pk 
Name varchar
Number varchar
Password varchar
表Newes
Id int pk
Title varchar
Content varchar
Personid int fk

表Person
Id  name       number    password
1   xiaoli     xiaoli    123456
表News
Id  tile     content   personid
1   hello    hello       1
2   good     good        1
Person与News为一对多双向映射,实现目标:当删除person表一个用户时,则news表中该用户所发布的所有新闻也被删除。
3. Person.hbm.xml
   <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
    <class name="ldh.vo.Person" table="PERSON" schema="dbo" catalog="jsj">
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <generator class="identity" />
        </id>
        <property name="number" type="java.lang.String">
            <column name="NUMBER" length="50" />
        </property>
        <property name="name" type="java.lang.String">
            <column name="NAME" length="50" />
        </property>
        <property name="password" type="java.lang.String">
            <column name="PASSWORD" length="50" />
        </property>
        <set name="news" inverse="true" cascade="delete">
         <key column="PERSONID" not-null="true"></key>
         <one-to-many class="ldh.vo.News"/>
        </set>
    </class>
</hibernate-mapping>
4. News.hbm.xml
   <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
    <class name="ldh.vo.News" table="NEWS" schema="dbo" catalog="jsj">
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <generator class="identity" />
        </id>
        <property name="title" type="java.lang.String">
            <column name="TITLE" length="50" />
        </property>
        <property name="content" type="java.lang.String">
            <column name="CONTENT" />
        </property>
        <many-to-one name="person" class="ldh.vo.Person"  cascade="none">
        <column name="PERSONID" not-null="true"></column>
        </many-to-one>
    </class>
</hibernate-mapping>
5. News.java
   package ldh.vo;
import java.io.Serializable;
public class News implements Serializable {
private int id;
private String title;
private String content;
private Person person;
public News() {
}
Get()和set()方法......
}
6. Person.java
   package ldh.vo;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

public class Person implements Serializable {
private int id;
private String number;
private String name;
private String password;
private Set news = new HashSet();
    public Person(){}
get()和set()方法......
}

你可能感兴趣的:(双向一对多映射)