Hibernate one-to-one 共享主键

    在项目中由于业务原因要对数据库中一个表做扩展,由于扩展的内容比较多,于是新建了一张表,表旧表做一对一关联,共享其旧表的主键。

    贴出个小例子供自己备忘使用

   我们这里用的是表名称:basic表和extend表

   Basic.java 和Basic.hbm.xm如下 

   package com.sszd.hibernate;

   public class Basic {

       private int id;
   
       private String feilda;

       private Extend extend;

       public Extend getExtend() {
           return extend;
       } 

       public void setExtend(Extend extend) {
           this.extend = extend;
        }

       public int getId() {
          return id;
       }

       public void setId(int id) {
          this.id = id;
       }

       public String getFeilda() {
         return feilda;
       }

       public void setFeilda(String feilda) {
          this.feilda = feilda;
      }   
}

<?xml version="1.0"?>
<!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.sszd.hibernate.Basic" table="basic">
     <id name="id" column="id">
        <generator class="native"/>
     </id>
     <property name="feilda" column="feilda" type="string"/>
     
     <!-- cascade 表示级联关系,extend伴随着basic的操作面操作 -->
     <one-to-one name="extend" class="com.sszd.hibernate.Extend" cascade="all"></one-to-one>
   
  </class>
</hibernate-mapping>

Extend.java和Extend.hbm.xml

package com.sszd.hibernate;


public class Extend {

    private int id;
   
    private String feilda;
   
    private Basic basic;
   
    public Basic getBasic() {
        return basic;
    }

    public void setBasic(Basic basic) {
        this.basic = basic;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getFeilda() {
        return feilda;
    }

    public void setFeilda(String feilda) {
        this.feilda = feilda;
    }
}

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.sszd.hibernate">
  <class name="com.sszd.hibernate.Extend" table="extend">
     <id name="id" column="id">
         <generator class="foreign">
             <param name="property">basic</param>
         </generator>
     </id>
     <property name="feilda" column="feilda"/>
     <one-to-one name="basic" class="com.sszd.hibernate.Basic" constrained="true"></one-to-one>
  </class>
</hibernate-mapping>

猜你喜欢

转载自shenshuibomb.iteye.com/blog/1028306