hibernate 之 關聯映射的基於外鍵的雙向一對一關聯

來源:互聯網
上載者:User

標籤:down   外鍵   any   http   北京   .config   tab   關係   對應檔   

1. 人和身份證是一個一對一的關係,他們的表結構為:

2. 類結構:Person.java

public class Person {    private int id;    private String name;    private int age;    private IdCard idCard;    public Person() {    }    public Person(String name, int age) {        super();        this.name = name;        this.age = age;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public IdCard getIdCard() {        return idCard;    }    public void setIdCard(IdCard idCard) {        this.idCard = idCard;    }    }

IdCard.java

public class IdCard {    private String id;    private String address;    private Person person;    public IdCard() {    }    public IdCard(String id, String address) {        super();        this.id = id;        this.address = address;    }    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getAddress() {        return address;    }    public void setAddress(String address) {        this.address = address;    }    public Person getPerson() {        return person;    }    public void setPerson(Person person) {        this.person = person;    }}

3. 對應檔:Person.hbm.xml

<hibernate-mapping>    <class name="cn.wh.vo.Person" table="t_person">        <id name="id">            <generator class="native"></generator>        </id>        <property name="name"/>        <property name="age"/>        <!-- 配置基於外鍵的一對一的關聯映射            和多對一映射幾乎一致,需要設定unique=true         -->        <many-to-one name="idCard" column="idCardId" unique="true"/>    </class></hibernate-mapping>

IdCard.hbm.xml

<hibernate-mapping>    <class name="cn.wh.vo.IdCard" table="t_idCard">        <id name="id">            <generator class="assigned"></generator>        </id>        <property name="address"/>        <one-to-one name="person" property-ref="idCard"/>    </class></hibernate-mapping>

4. 測試:

public class HibernateTest {    private Session session=null;    @Before    public void setUp(){        session = HibernateUtil.getSession();    }    @After    public void tearDown(){        HibernateUtil.close();    }    @Test    public void testCreateDB(){        Configuration cfg = new Configuration().configure();        SchemaExport export = new SchemaExport(cfg);        //第一個參數  是否列印  資料庫指令碼        //第二個參數 是否將指令碼匯入資料庫執行        export.create(true, true);    }    @Test    public void testInit(){        Transaction tx = null;        try {            tx = session.beginTransaction();            IdCard card1 = new IdCard("1101","北京昌平");            IdCard card2 = new IdCard("1102", "北京海澱");            Person p1 = new Person("張三",22);            p1.setIdCard(card1);            Person p2 = new Person("李四",23);            p2.setIdCard(card2);                        session.save(card1);            session.save(card2);            session.save(p1);            session.save(p2);                        tx.commit();                    } catch (Exception e) {            if(tx!=null)                tx.rollback();        }    }    @Test    public void testGet(){        Person p1 = (Person)session.get(Person.class, 1);        System.out.println(p1.getName()+"---"+p1.getAge()+"----"+p1.getIdCard().getAddress());        System.out.println("----------------------------");        IdCard card1 = (IdCard)session.get(IdCard.class, "1101");        System.out.println(card1.getId()+"---"+card1.getAddress()+"---"+card1.getPerson().getName());    }    }

 

hibernate 之 關聯映射的基於外鍵的雙向一對一關聯

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.