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

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

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

    隨筆 - 312, 文章 - 14, 評(píng)論 - 1393, 引用 - 0
    數(shù)據(jù)加載中……

    eclipse + JBoss 5 + EJB3開發(fā)指南(9):實(shí)現(xiàn)Entity Bean的多對多(many-to-many)映射

    本文為原創(chuàng),如需轉(zhuǎn)載,請注明作者和出處,謝謝!

    上一篇:eclipse + JBoss 5 + EJB3開發(fā)指南(8):實(shí)現(xiàn)Entity Bean的一對多(one-to-many)映射

        在EJB3中需要使用@ManyToMany對封裝多對多關(guān)系的字段或getter方法進(jìn)行注釋。先看看下面的表:
    圖1  t_addresses表

          t_addresses表和t_customers表是多對多的關(guān)系。需要使用一個(gè)關(guān)聯(lián)表來描述這種關(guān)系,關(guān)聯(lián)表的結(jié)構(gòu)如下圖所示。
    圖2  t_customers_addresses
        在Customer類中定義一個(gè)Collection<Address>類型的字段(addresses),用于保存與該Customer對象相對應(yīng)的多個(gè)Address對象,代碼如下:
    package entity;

    import java.util.Collection;

    import javax.persistence.CascadeType;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.JoinTable;
    import javax.persistence.ManyToMany;
    import javax.persistence.OneToMany;
    import javax.persistence.OneToOne;
    import javax.persistence.PrimaryKeyJoinColumn;
    import javax.persistence.Table;

    @Entity
    @Table(name 
    = "t_customers")
    public class Customer
    {
        
    private int id;
        
    private String name;
        
    private Referee referee;
        
    private Collection<Order> orders;

        
    private Collection<Address> addresses;

        @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
        @JoinTable(name 
    = "t_customers_addresses", joinColumns = @JoinColumn(name = "customer_id",
         referencedColumnName 
    = "id"), inverseJoinColumns = @JoinColumn(name = "address_id", referencedColumnName = "id"))
        
    public Collection<Address> getAddresses()
        {
            
    return addresses;
        }

        ... ...

    }

        @JoinTable注釋用于指定連接表和t_customers及t_addresses表的連接字段關(guān)系。
        Address類的代碼如下:

    package entity;

    import java.util.Collection;

    import javax.persistence.CascadeType;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.ManyToMany;
    import javax.persistence.Table;
    @Entity
    @Table(name
    ="t_addresses")
    public class Address
    {
        
    private int id;
        
    private String addressLine;
        
    private String country;
        
    private String postCode;
        
    private Collection<Customer> customers;
        @Id
        @GeneratedValue(strategy
    =GenerationType.IDENTITY)
        
    public int getId()
        {
            
    return id;
        }
        
    public void setId(int id)
        {
            
    this.id = id;
        }
        
    public String getAddressLine()
        {
            
    return addressLine;
        }
        
    public void setAddressLine(String addressLine)
        {
            
    this.addressLine = addressLine;
        }
        
    public String getCountry()
        {
            
    return country;
        }
        
    public void setCountry(String country)
        {
            
    this.country = country;
        }
        
    public String getPostCode()
        {
            
    return postCode;
        }
        
    public void setPostCode(String postCode)
        {
            
    this.postCode = postCode;
        }
        @ManyToMany(mappedBy
    ="addresses")
        
    public Collection<Customer> getCustomers()
        {
            
    return customers;
        }
        
    public void setCustomers(Collection<Customer> customers)
        {
            
    this.customers = customers;
        }    
    }

        由于是多對多的關(guān)系,因此,在Address類中需要定義一個(gè)Collection<Customer>類型的字段(customers)用來保存與該Address對象相對應(yīng)的Customer對象。getCustomers方法也需要使用@ManyToMany進(jìn)行注釋。可以使用下面代碼進(jìn)行測試:
    Customer customer = new Customer();
    customer.setName(
    "微軟11");
    List<Address> addresses = new ArrayList<Address>();
    Address address 
    = new entity.Address();
    address.setAddressLine(
    "address1");
    address.setCountry(
    "中國"); 
    address.setPostCode(
    "12345678");
    addresses.add(address);
    address 
    = new entity.Address();
    address.setAddressLine(
    "address2");
    address.setCountry(
    "美國"); 
    address.setPostCode(
    "4321");
    addresses.add(address);
    customer.setAddresses(addresses);

    em.persist(customer);

    下一篇:eclipse + JBoss 5 + EJB3開發(fā)指南(9):實(shí)現(xiàn)Entity Bean的多對多(many-to-many)映射



    Android開發(fā)完全講義(第2版)(本書版權(quán)已輸出到臺(tái)灣)

    http://product.dangdang.com/product.aspx?product_id=22741502



    Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


    新浪微博:http://t.sina.com.cn/androidguy   昵稱:李寧_Lining

    posted on 2009-06-03 16:15 銀河使者 閱讀(1792) 評(píng)論(0)  編輯  收藏 所屬分類: java 原創(chuàng)ejb3JBoss

    主站蜘蛛池模板: 亚洲久热无码av中文字幕| 永久黄网站色视频免费| 边摸边吃奶边做爽免费视频99| 亚洲av日韩av高潮潮喷无码| 免费jlzzjlzz在线播放视频| 免费福利在线播放| 午夜免费福利片观看| 久久99精品免费一区二区| 国产在亚洲线视频观看| 亚洲色www永久网站| 亚洲最新在线视频| 91亚洲导航深夜福利| 亚洲AV永久无码精品| 久久影院亚洲一区| 亚洲精品无码AV中文字幕电影网站| 四虎免费大片aⅴ入口| 国产啪精品视频网免费| 永久在线免费观看| 久久99精品免费视频| 免费网站观看WWW在线观看| 国产精品小视频免费无限app| 国产成人不卡亚洲精品91| 亚洲精品乱码久久久久久蜜桃图片 | 日本高清免费不卡在线| 黄页网站在线看免费| 猫咪免费人成网站在线观看| 无码av免费网站| 日韩精品免费在线视频| 一区二区三区无码视频免费福利| 国产精品玖玖美女张开腿让男人桶爽免费看| 羞羞视频免费观看| 日韩免费在线中文字幕| 一级做a爰片久久毛片免费陪 | 黄色免费网站网址| 我的小后妈韩剧在线看免费高清版| 免费A级毛片av无码| 99久久精品免费视频| 亚洲香蕉免费有线视频| 波多野结衣在线免费观看| 久九九精品免费视频| 成人毛片免费观看视频大全|