欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

eclipse + JBoss 5 + EJB3開發指南(8):實現E

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

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

EJB3的一對多映射使用@OneToMany來設置,如果是雙向的一對多映射,在many方需要使用@ManyToOne設置。在本書中給出兩個表,其他一個表t_customers在上一篇文章中已給出了,另一個表的結構如圖1所示。
圖1 t_orders表

t_customers和t_orders表是一對多關系,一個Customer可能有多個Order,而一個Order只能有一個Customer。
在Customer類中需要定義一個集合類型的屬性,用來保存多個Order對象,Customer類的代碼如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> 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 Stringname;
private Refereereferee;
private Collection < Order > orders;

@OneToMany(mappedBy = " customer " ,cascade = CascadeType.ALL)
public Collection < Order > getOrders()
{
return orders;
}
public void setOrders(Collection < Order > orders)
{
this .orders = orders;
}
@Id
@GeneratedValue(strategy
= GenerationType.IDENTITY)
public int getId()
{
return id;
}
... ...
}
其中@OneToMany的mappedBy屬性指定了Order類中獲得Customer對象的屬性名。Order類的代碼如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> package entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name
= " t_orders " )
public class Order
{
private int id;
private StringproductId;
private int count;
private Customercustomer;

@ManyToOne
@JoinColumn(name
= " customer_id " )
public CustomergetCustomer()
{
return customer;
}

public void setCustomer(Customercustomer)
{
this .customer = customer;
}

@Id
@GeneratedValue(strategy
= GenerationType.IDENTITY)
public int getId()
{
return id;
}
... ...


}
其中@JoinColumn注釋的name屬性指定t_orders表中用于連接t_customers表的外鍵名。
可以使用下面的代碼進行測試:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> Customercustomer = new Customer();
customer.setName(
" 微軟 " );
List < Order > orders = new ArrayList < Order > ();
Orderorder
= new Order();
order.setProductId(
" 1234 " );
order.setCount(
20 );
order.setCustomer(customer);
orders.add(order);
order
= new Order();
order.setProductId(
" 4321 " );
order.setCount(
12 );
order.setCustomer(customer);
orders.add(order);
customer.setOrders(orders);
em.persist(customer);

除此之外,還可以使用@JoinTable指定連接表來映射one-to-many關系。連接表的結構如圖2所示。
圖2 t_customers_orders表

首選需要將Customer類的getOrders方法修改成下的形式:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> @OneToMany
@JoinTable(name
= " t_customers_orders " ,joinColumns = @JoinColumn(name = " t_customers_id " ,
referencedColumnName
= " id " ),inverseJoinColumns =
@JoinColumn(name
= " orders_id " ,referencedColumnName = " id " ))
public Collection < Order > getOrders()
{
return orders;
}

其中name屬性指定圖2所示的連接表的名稱。joinColumns指定了t_customers表和t_customers_orders表中相連接的字段。inverseJoinColumns指定了t_orders表和t_customers_orders表中相連接的字段。這時t_orders表中的customer_id字段就不再需要了。因此,需要將Order表中的customer屬性(getter和setter方法)去掉。

在持久化Customer和Order對象時,需要對Order對象進行持久化后才能對Customer對象進行持久化。

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



國內最棒的Google Android技術社區(eoeandroid),歡迎訪問!

《銀河系列原創教程》 發布

《Java Web開發速學寶典》 出版,歡迎定購

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


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲国产二区 | 91高清免费观看 | 一本大道香蕉中文日本不卡高清二区 | 欧美日韩国产色综合一二三四 | 国产精品日本一区二区在线播放 | 亚洲刺激视频 | 久久久久国产亚洲日本 | 亚洲欧美中文日韩在线v日本 | 亚洲一区免费在线 | 自拍偷拍视频网站 | 欧美日本另类xxx乱大交 | 色综合久久88色综合天天 | 亚洲欧美日本在线观看 | 亚洲精品成人AA片在线播 | 欧美aaa | 久久久久久久久久网 | 精品欧美一区二区精品久久久 | 久久久久久国产精品免费免费狐狸 | 国产亚洲综合久久 | 一级看片免费视频 | 一级毛片,一级毛片 | 国产一码二码免费观看 | 亚洲aⅴ天堂av在线电影软件 | 国产1级片| 99福利视频 | 精品国产乱码久久久久久丨区2区 | 日韩一区二区三区在线观看 | 欧美 亚洲 另类 热图 | 男女同床爽爽视频免费 | 国产精品欧美一区二区在线看 | 黑人性猛交xxxx乱大交一 | 黄a在线观看 | 亚洲精品午夜国产va久久成人 | www.sewang| 无遮挡很爽很污很黄的网站w | 午夜电视剧 | 久久综合九色综合国产 | 亚洲精品国产成人 | 欧美三级不卡 | 日本三级一区 | 色欧美片视频在线观看 |