实体类就不多说了,分别为你的实体类建立相关的hbm.xml
city.hbm.xml:
<class name="com.entity.city" table="CITY">
<id name="cid" type="java.lang.String">
<column name="CID" />
<generator class="guid" />
</id>
<property name="cname" type="java.lang.String">
<column name="CNAME" />
</property>
<many-to-one name="province" class="com.entity.province" fetch="join">
<column name="pid" />
</many-to-one>
</class>
province.hbm.xml:
<class name="com.entity.province" table="PROVINCE">
<id name="pid" type="java.lang.String">
<column name="PID" />
<generator class="guid" />
</id>
<property name="pname" type="java.lang.String">
<column name="PNAME" />
</property>
<set name="sc" table="CITY" inverse="false" lazy="true" cascade="all-delete-orphan">
<key>
<column name="PID" />
</key>
<one-to-many class="com.entity.city" />
</set>
<many-to-one name="nation" class="com.entity.nation" fetch="join">
<column name="nid" />
</many-to-one>
</class>
nation.hbm.xml:
<class name="com.entity.nation" table="NATION">
<id name="nid" type="java.lang.String">
<column name="NID" />
<generator class="guid" />
</id>
<property name="nname" type="java.lang.String">
<column name="NNAME" />
</property>
<set name="sp" table="PROVINCE" inverse="false" lazy="true" cascade="all-delete-orphan">
<key>
<column name="NID" />
</key>
<one-to-many class="com.entity.province" />
</set>
</class>
这里要注意到几点,如果你在实体类将几张表的关系订好,eclipse会帮你把这些实体类的1对多关系,多对1关系自动建好在hbm.xml中,但是id列需要改为guid或者是uuid的随机数,其次是key的列要改为相关表的id,在set中需要建好级联,不然会报错。
调用的话,要先从主表开始:
Configuration configuration=null;
SessionFactory sessionFactory=null;
Session session=null;
Transaction transaction=null;
@Before
public void before() {
configuration=new Configuration().configure();
sessionFactory=configuration.buildSessionFactory();
session=sessionFactory.openSession();
transaction=session.beginTransaction();
}
@After
public void after() {
transaction.commit();
session.close();
sessionFactory.close();
}
@Test
public void add() {
nation n=new nation();
n.setNname("中国");
province p1=new province();
p1.setPname("湖南");
province p2=new province();
p2.setPname("广东");
city c1=new city();
c1.setCname("长沙");
city c2=new city();
c2.setCname("广州");
n.getSp().add(p1);
n.getSp().add(p2);
p1.getSc().add(c1);
p2.getSc().add(c2);
p1.setNation(n);
p2.setNation(n);
c1.setProvince(p1);
c2.setProvince(p2);
session.save(n);
}