hibernate映射之主键单向一对一

数据模型

userinfo表

login表

 

对象模型

UserInfo 
    private int uid;
    private String uname;
    private boolean usex;
Login
    private int lid;
    private String lname;
    private String lpassword;
    private UserInfo userinfo;

配置对应关系

<?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 package="com.skyedu.bean">
    <class name="UserInfo" table="userinfo">
       <id name="uid" column="uid" >
           <generator class="native"></generator>
       </id>
       <property name="uname" column="uname" length="32"></property>
       <property name="usex" column="usex" ></property>
    </class>
</hibernate-mapping>

   附录说明:

     

<?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 package="com.skyedu.bean">
    <class name="Login" table="login">
       <id name="lid" column="lid" >
             <generator class="foreign">
                <param name="property">userinfo</param>
             </generator>
       </id>
       <property name="lname" column="lname" length="30"></property>
       <property name="lpassword" column="lpassword" length="30" ></property>
       <one-to-one name="userinfo" class="UserInfo" constrained="true"
        cascade="save-update" ></one-to-one>
    </class>
</hibernate-mapping> 

 

测试代码:

    @Test
    public void save(){
        Session session= HibernateUtil.getSession();
        Transaction transaction = session.beginTransaction();
        try{
            UserInfo userinfo = new  UserInfo();
            userinfo.setUname("魏丹");
            userinfo.setUsex(true);
            
            Login login = new Login();
            login.setLname("weidan");
            login.setLpassword("weidan");
            login.setUserinfo(userinfo);
            
            session.save(login);
            
            transaction.commit();
        }catch(Exception e){
            transaction.rollback();
        }finally{
            session.close();
        }
    }
    
    @Test
    public void find(){
        Session session= HibernateUtil.getSession();
        Login login =  (Login) session.get(Login.class,3);
        System.out.println("loginName:"+login.getLname());
        System.out.println("userName:"+login.getUserinfo().getUname());
    }
    
    
    

//    public static void main(String[] args) {
//        HibernateUtil.createTable();
//    }
    
    

    

 

 

posted @ 2013-02-04 14:57  虎猫  阅读(159)  评论(0编辑  收藏  举报