您的位置:首页 > 数据库 > MySQL

Hibernate 一对一的关系(one-to-one)

2008-10-14 09:44 281 查看
Hibernate 一对一的关系(one-to-one)

假设学生和卡是一对一的关系

(mysql)

学生表:

CREATE TABLE `stu` (

  `sid` int(11) NOT NULL auto_increment,

  `sname` varchar(50) default NULL,

  PRIMARY KEY  (`sid`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

卡表:

CREATE TABLE `card` (

  `cid` int(11) NOT NULL auto_increment,

  `cname` varchar(50) default NULL,

  PRIMARY KEY  (`cid`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Stu Bean:

public class Stu  implements java.io.Serializable {

    private Integer sid;

     private String sname;

     private Card card;

  public Card getCard() {

        return card;

    }

public void setCard(Card card) {

        this.card = card;

    }

  public Stu() {

    }

  public Stu(String sname) {

        this.sname = sname;

    }

  public Integer getSid() {

        return this.sid;

    }

    

    public void setSid(Integer sid) {

        this.sid = sid;

    }

    public String getSname() {

        return this.sname;

    }

    

    public void setSname(String sname) {

        this.sname = sname;

    }

}

Card Bean:

public class Card  implements java.io.Serializable {

     private Integer cid;

     private String cname;

     private Stu stu;

    public Stu getStu() {

        return stu;

    }

    public void setStu(Stu stu) {

        this.stu = stu;

    }

    public Card() {

    }

    public Card(String cname) {

        this.cname = cname;

    }

   public Integer getCid() {

        return this.cid;

    }

    

    public void setCid(Integer cid) {

        this.cid = cid;

    }

    public String getCname() {

        return this.cname;

    }

    

    public void setCname(String cname) {

        this.cname = cname;

    }

}

Stu.hbm.xml:

<hibernate-mapping>

    <class name="com.vo.Stu" table="stu" catalog="lms">

        <id name="sid" type="java.lang.Integer">

            <column name="sid" />

            <generator class="native" />

        </id>

        <property name="sname" type="java.lang.String">

            <column name="sname" length="50" />

        </property>

        <one-to-one name="card" class="com.vo.Card" cascade="save-update"></one-to-one>

    </class>

</hibernate-mapping>

Card.hbm.xml:

<hibernate-mapping>

    <class name="com.vo.Card" table="card" catalog="lms">

        <id name="cid" type="java.lang.Integer">

            <column name="cid" />

            <generator class="foreign" >

             <param name="property">stu</param>

            </generator>

        </id>

        <property name="cname" type="java.lang.String">

            <column name="cname" length="50" />

        </property>

        <one-to-one name="stu" class="com.vo.Stu"></one-to-one>

    </class>

</hibernate-mapping>

Test.java:

public class Test {

    SessionFactory sf;

    Session session;

    private Test()

    {

        try

        {

            Configuration cfg = new Configuration();

            sf = cfg.configure().buildSessionFactory();

            session = sf.openSession();

        }

        catch(HibernateException ex)

        {

            ex.printStackTrace();

        }

        

    }

    public void addMethod(Stu st)

       {

           Transaction t=null;

           t=session.beginTransaction();

           session.save(st);

           t.commit();

           

       }

    public static void main(String[] args) {

                Stu st=new Stu();

                st.setSname("ding6");

                Card ca=new Card();

                ca.setCname("jcard6");

                st.setCard(ca);  

                ca.setStu(st);  

                

                new Test().addMethod(st);

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息