<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    溫故知新:hibernate_07_表關聯_一對一單向關聯

    一對一和多對一在配置上基本一致,只是需要在配置關聯的一方添加unique="true"(基于XML配置而言),以人和身份證為例。
    Idcard
     1 package domain;
     2 
     3 public class Idcard {
     4     
     5     private int id;
     6     private String num;
     7     private Person person;
     8     //get/set和構造省略,但實際不可省略
     9     
    10 }
    11 

     1 <?xml version="1.0"?>
     2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     4 
     5 <hibernate-mapping>
     6     <class name="domain.Idcard" table="IDCARD">
     7         <id name="id" type="int">
     8             <column name="ID" />
     9             <generator class="native" />
    10         </id>
    11         <property name="num" type="java.lang.String">
    12             <column name="NUM" />
    13         </property>
    14         <!-- 注意:unique配置只有在hibernate生成生成DDL的時候才會啟用,若已存在數據表,則不會檢查唯一性約束 -->
    15         <!-- 配置unique="true",指明該多對一多的一方只有一個 -->
    16         <many-to-one name="person" column="pid" class="domain.Person" unique="true" />
    17     </class>
    18 </hibernate-mapping>
    19 

     1 package domain;
     2 
     3 public class Person {
     4     
     5     private int id;
     6     private String name;
     7     //get/set和構造省略,但實際不可省略
     8     
     9 }
    10 

     1 <?xml version="1.0"?>
     2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     4 
     5 <hibernate-mapping>
     6     <class name="domain.Person" table="PERSON">
     7         <id name="id" type="int">
     8             <column name="ID" />
     9             <generator class="native" />
    10         </id>
    11         <property name="name" type="java.lang.String">
    12             <column name="NAME" />
    13         </property>
    14     </class>
    15     
    16 </hibernate-mapping>
    17 

    書寫測試類
     1 package demo;
     2 
     3 import org.hibernate.Session;
     4 import org.junit.Test;
     5 
     6 import domain.Idcard;
     7 import domain.Person;
     8 import util.HibernateUtil;
     9 
    10 public class App 
    11 {
    12     
    13     /**
    14      * 一對一單向關聯
    15      */
    16     @Test
    17     public void addTest01() {
    18         Session session = null;
    19         try {
    20             session = HibernateUtil.openSession();
    21             session.beginTransaction();
    22             
    23             Person person = new Person();
    24             person.setName("Nick");
    25             session.save(person);
    26             
    27             Idcard idcard = new Idcard();
    28             idcard.setNum("#2");
    29             idcard.setPerson(person);
    30             session.save(idcard);
    31             
    32             session.getTransaction().commit();
    33             
    34         } catch (Exception e) {
    35             if (session != null) {
    36                 session.getTransaction().rollback();
    37             }
    38         } finally{
    39             if (session != null) {
    40                 session.close();
    41             }
    42         }
    43     }
    44     
    45     /**
    46      * 一對一單向關聯,idcard一方維護一對一的關系,所以一個人不能有兩個idcard
    47      * 此處有異常
    48      */
    49     @Test
    50     public void addTest02() {
    51         Session session = null;
    52         try {
    53             session = HibernateUtil.openSession();
    54             session.beginTransaction();
    55             
    56             Person person = (Person) session.load(Person.class, 1);
    57             
    58             Idcard idcard = new Idcard();
    59             idcard.setNum("#2");
    60             idcard.setPerson(person);
    61             session.save(idcard);
    62             
    63             session.getTransaction().commit();
    64             
    65         } catch (Exception e) {
    66             e.printStackTrace();
    67             if (session != null) {
    68                 session.getTransaction().rollback();
    69             }
    70         } finally{
    71             if (session != null) {
    72                 session.close();
    73             }
    74         }
    75     }
    76 }
    77 

    posted on 2015-01-20 19:54 都較瘦 閱讀(91) 評論(0)  編輯  收藏 所屬分類: ORMFramework

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    公告

    博客定位:囿于目前的水平,博客定位在記錄自己的學習心得和隨手的練習

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 一区二区在线免费观看| 人妻18毛片a级毛片免费看| 日本高清不卡aⅴ免费网站| 亚洲AV无码乱码在线观看牲色| 亚洲一区精品视频在线| 222www在线观看免费| 亚洲AV福利天堂一区二区三| 中国一级特黄高清免费的大片中国一级黄色片 | 亚洲欧洲日产韩国在线| 久久香蕉国产线看免费| 亚洲中文字幕无码一区二区三区 | 亚洲熟女少妇一区二区| 人体大胆做受免费视频| 在线亚洲精品自拍| 久久www免费人成精品香蕉| 亚洲日韩中文字幕日韩在线 | 国产成人精品免费午夜app| 亚洲日韩乱码中文无码蜜桃臀| 一级毛片在线观看免费| 亚洲国产人成在线观看69网站 | 东方aⅴ免费观看久久av| 久久亚洲国产精品一区二区| 日韩电影免费在线观看| 亚洲欧洲精品国产区| 一个人免费观看视频www| 亚洲欧美自偷自拍另类视| 国产免费131美女视频| 一区二区三区免费精品视频| 亚洲日本乱码在线观看| 久久狠狠躁免费观看| 亚洲国产精品久久人人爱| 噼里啪啦电影在线观看免费高清| 亚洲欧洲日产国码久在线| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 亚洲综合AV在线在线播放| 国产精品99精品久久免费| 亚洲的天堂av无码| 美女黄网站人色视频免费国产| 人妻仑刮八A级毛片免费看| 亚洲国产精品SSS在线观看AV| 亚洲免费电影网站|