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

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

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

    隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0
    數據加載中……

    eclipse + JBoss 5 + EJB3開發指南(9):實現Entity Bean的多對多(many-to-many)映射

    本文為原創,如需轉載,請注明作者和出處,謝謝!

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

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

          t_addresses表和t_customers表是多對多的關系。需要使用一個關聯表來描述這種關系,關聯表的結構如下圖所示。
    圖2  t_customers_addresses
        在Customer類中定義一個Collection<Address>類型的字段(addresses),用于保存與該Customer對象相對應的多個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表的連接字段關系。
        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;
        }    
    }

        由于是多對多的關系,因此,在Address類中需要定義一個Collection<Customer>類型的字段(customers)用來保存與該Address對象相對應的Customer對象。getCustomers方法也需要使用@ManyToMany進行注釋。可以使用下面代碼進行測試:
    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開發指南(9):實現Entity Bean的多對多(many-to-many)映射



    Android開發完全講義(第2版)(本書版權已輸出到臺灣)

    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 銀河使者 閱讀(1793) 評論(0)  編輯  收藏 所屬分類: java 原創ejb3JBoss

    主站蜘蛛池模板: 亚洲欧洲日产国码无码久久99| 四虎永久在线精品视频免费观看| 久久精品亚洲男人的天堂| 亚洲欧洲日产国码久在线| 无码乱肉视频免费大全合集| 亚洲伊人久久大香线蕉在观 | 亚洲三级在线观看| 无码日韩人妻av一区免费| 亚洲H在线播放在线观看H| aⅴ免费在线观看| 学生妹亚洲一区二区| 免费观看的av毛片的网站| 亚洲午夜精品一区二区麻豆| 国产乱子伦精品免费无码专区 | 亚洲春色另类小说| 免费AA片少妇人AA片直播| 亚洲性无码一区二区三区| 日本一线a视频免费观看| 一级中文字幕免费乱码专区| 亚洲三区在线观看无套内射| 日本免费大黄在线观看| 国产精品亚洲精品观看不卡| 免费国产a国产片高清| 成在线人免费无码高潮喷水| 亚洲AV日韩AV天堂久久| 黄页网站在线观看免费高清| 国产亚洲精品2021自在线| 亚洲乱码精品久久久久..| 免费福利视频导航| 理论秋霞在线看免费| 亚洲一区二区三区AV无码| 亚洲日本在线免费观看| 亚洲AV无码精品国产成人| 亚洲日本一区二区三区在线| 2019中文字幕在线电影免费| jizzjizz亚洲日本少妇| 亚洲av永久无码精品古装片| 成人免费视频小说| 野花香高清视频在线观看免费| 亚洲 欧洲 自拍 另类 校园| 四虎影视精品永久免费|