hibernate学习日志三:一对一关联

来源:互联网 发布:sql在表中增加一个字段 编辑:程序博客网 时间:2024/06/05 17:31

一对一关联包括以下两种类型:1,主键关联,2,唯一外键关联。

主键关联:

一对一关联,即两张表的主键形成一对一映射。

例子:一个中国公民只允许有一张护照

建表:users ,字段:id,name

passport,字段,id,serial

实体类配置文件:Users.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.csdn.model.Users" table="Users">        <id name="id" column="id">            <generator class="native"/>        </id>        <property name="name" column="name"/>         <one-to-one name="passport" class="com.csdn.model.Passport" cascade="all" outer-join="true"/>    </class></hibernate-mapping>

Passport.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.csdn.model.Passport" table="Passport">        <id name="id" column="id">            <generator class="foreign">                <param name="property">users</param>            </generator>        </id>         <one-to-one name="users" class="com.csdn.model.Users" constrained="true"/>        <property name="serial" column="serial"/>    </class></hibernate-mapping>

测试:

 Users users=new Users(); users.setName("chenweiwei");  Passport passport=new Passport(); passport.setSerial("12345678");  users.setPassport(passport); passport.setUsers(users);  session.save(users);
成功!










原创粉丝点击