一. 多对一
例如:人>>>>组
java类当中
数据库中:在多的一端维护一个多指向一的关系,数据库会在多一端的表中增加一个外键字段,指向一的主键
测试部分代码如下:
Group.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="com.test.model.Group" table="n_1group">
<id name="groupId">
<generator class="native"></generator>
</id>
<property name="groupName" type="java.lang.String"></property>
</class>
</hibernate-mapping>
Person.hbm.xml: 多的一端使用<many-to-one>
标签,name属性指定关联类在本类中的属性名,column属性指定外键的列名。Cascade属性能让hibernate在操作多的一端时对一的一端进行级联操作。
Cascade属性可选的值有:
all : 所有情况下均进行关联操作。
none:所有情况下均不进行关联操作。这是默认值。
save-update:在执行save/update/saveOrUpdate时进行关联操作。
delete:在执行delete时进行关联操作。
<?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="com.test.model.Person" table="n_1person">
<id name="id">
<generator class="native"></generator>
</id>
<property name="name" type="java.lang.String"></property>
<property name="age" type="java.lang.Integer"></property>
<many-to-one name="group" column="groupId" cascade="save-update"/>
</class>
</hibernate-mapping>