欧美三区_成人在线免费观看视频_欧美极品少妇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條評論
主站蜘蛛池模板: 日本中文字幕在线播放 | 国产片欧美片亚洲片久久综合 | 青娱乐精品视频在线观看 | 一区二区中文字幕 | 高清毛片免费看 | 亚洲爽 | 日产精品乱码卡一卡2卡三 久久99精品久久久久久综合 | 欧美激情黄色 | 国产小视频在线观看www | 一级毛片在线观看视频 | 夜夜草av | 国产在线中文字幕 | 精品欧美成人高清视频在线观看 | 性爱视频在线免费 | 波多野结衣中文一区 | 国产精品美女久久久久久久久久久 | 91国内精品久久久久免费影院 | 欧美在线观看一区 | 最新中文字幕在线 | 国产精品尤物在线观看一区 | av在线成人| 久色一区 | 欧美精品一区二 | 欧美1区 | 欧美 中文字幕 | 亚洲精品一区专区 | 亚洲国产二区 | 国产三级一区二区三区 | 91你懂的| 92香蕉视频| 丁香午夜 | 久久久久久国产精品 | 一级黄色一级片 | 九色com| 午夜影院试看 | 欧美妇人 | 激情丁香开心久久综合 | 欧美不卡视频 | 国产精品你懂的在线播放 | 奇米影视亚洲四色8888 | 久久久人成影片免费观看 |