国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Eclipse+JBoss+EJB3實現Entity Bean的一對一映射

開發 后端
本文介紹在Eclipse+JBoss+EJB3下實現Entity Bean的一對一映射。一對一映射是很常用的。在一般情況下,一個主表通過外鍵和從表形成一對一的關系。

一對一映射是很常用的。在一般情況下,一個主表通過外鍵和從表形成一對一的關系。在EJB3中使用@OneToOne注釋來映射。一對一關系除了使用外鍵進行關聯外,也可以采用共享主鍵的方式連接兩個表。先看看如下兩個表的結構:

t_customers
圖1  t_customers

t_referees

圖2  t_referees

 

 

t_customers和t_referees表形成了一對一的關系。t_customers表通過referee_id與t_referees表相連。與t_customers表對應的實體Bean的代碼如下:

  1. package entity;  
  2.  
  3. import java.util.Collection;  
  4. import javax.persistence.Entity;  
  5. import javax.persistence.FetchType;  
  6. import javax.persistence.GeneratedValue;  
  7. import javax.persistence.GenerationType;  
  8. import javax.persistence.Id;  
  9. import javax.persistence.JoinColumn;  
  10. import javax.persistence.OneToOne;  
  11. import javax.persistence.Table;  
  12.  
  13. @Entity 
  14. @Table(name = "t_customers")  
  15. public class Customer  
  16. {  
  17.     private int id;  
  18.     private String name;  
  19.     private Referee referee;  
  20.  
  21.     @Id 
  22.     @GeneratedValue(strategy = GenerationType.IDENTITY)  
  23.     public int getId()  
  24.     {  
  25.         return id;  
  26.     }  
  27.     public void setId(int id)  
  28.     {  
  29.         this.id = id;  
  30.     }  
  31.  
  32.     public String getName()  
  33.     {  
  34.         return name;  
  35.     }  
  36.  
  37.     public void setName(String name)  
  38.     {  
  39.         this.name = name;  
  40.     }  
  41.  
  42.     @OneToOne 
  43.     public Referee getReferee()  
  44.     {  
  45.         return referee;  
  46.     }  
  47.     public void setReferee(Referee referee)  
  48.     {  
  49.         this.referee = referee;  
  50.     }  
  51. }  

從上面的代碼可以看出,getReferee方法使用了@OneToOne進行設置。在裝載Customer對象的同時,Referee對象會被同時裝載,而默認的外鍵字段就是Customer類中的referee屬性名 + "_" + id,也就是referee_id。下面看一下與t_referees表對應的實體Bean代碼:

  1. package entity;  
  2.  
  3. import javax.persistence.Entity;  
  4. import javax.persistence.GeneratedValue;  
  5. import javax.persistence.GenerationType;  
  6. import javax.persistence.Id;  
  7. import javax.persistence.JoinColumn;  
  8. import javax.persistence.OneToOne;  
  9. import javax.persistence.Table;  
  10.  
  11. @Entity 
  12. @Table(name="t_referees")  
  13. public class Referee  
  14. {  
  15.     private int id;  
  16.     private String name;  
  17.     private Customer customer;  
  18.     @OneToOne(mappedBy="referee")  
  19.     public Customer getCustomer()  
  20.     {  
  21.         return customer;  
  22.     }  
  23.  
  24.     public void setCustomer(Customer customer)  
  25.     {  
  26.         this.customer = customer;  
  27.     }  
  28.  
  29.     @Id 
  30.     @GeneratedValue(strategy = GenerationType.IDENTITY)  
  31.     public int getId()  
  32.     {  
  33.         return id;  
  34.     }  
  35.     public void setId(int id)  
  36.     {  
  37.         this.id = id;  
  38.     }  
  39.     public String getName()  
  40.     {  
  41.         return name;  
  42.     }  
  43.  
  44.     public void setName(String name)  
  45.     {  
  46.         this.name = name;  
  47.     }  
  48. }  

Referee類使用了customer屬性映射了Customer對象,實際上,這是一個雙向的one-to-one映射。這時,在Referee類的customer屬性的getter方法的@OneToOne注釋中,需要使用mappedBy屬性來指定主表(Customer)中的映射從表的屬性名(referee)。

我們可以使用下面的代碼進行測試:

  1. System.out.println(em.find(Referee.class1).getCustomer().getName());  
  2. Customer customer = new Customer();  
  3. customer.setName("微軟");  
  4. Referee referee = new Referee();  
  5. referee.setName("趙軍");  
  6. em.persist(referee);          
  7. customer.setReferee(referee);  
  8. em.persist(customer); 

如果要覆蓋默認的名鍵名,例如,外鍵名為referee1_id,可以兩種方法使EJB3容器使用新的外鍵:

1.  修改Customer類中的referee屬性的getter和setter方法為getReferee1和setReferee1,并將Referee類中mappedBy屬性的值修改成referee1。

2.  使用@JoinColumn注釋設置新的外鍵名,這種方法只需要修改Customer類的getReferee方法上面注釋即可,代碼如下:

  1. @OneToOne 
  2. @JoinColumn(name="referee1_id")  
  3. public Referee getReferee()  
  4. {  
  5.     return referee;  
  6. }    

one-to-one關系還可以共享主鍵,也就是一個表的主鍵的值依賴于另一個表的主鍵的值。因此,在這種情況下,就不再需要t_customers表中的referee_id字段了。由于t_referees表的id字段值依賴于t_customers表的id字段值,因此,需要將t_referees表中的id字段值的自增類型去掉。

在EJB3中使用@PrimaryKeyJoinColumn注釋來實現主鍵的共享。首先需要修改Customer類的getReferee方法上方的注釋,修改后的代碼如下:

  1. @OneToOne(cascade=CascadeType.ALL)  
  2. @PrimaryKeyJoinColumn 
  3. public Referee getReferee()  
  4. {  
  5.     return referee;  
  6. }    然后要修改Referee類中的getCustomer和getId方法上方的注釋,修改后的代碼如下:  
  7. @OneToOne 
  8. @PrimaryKeyJoinColumn 
  9. public Customer getCustomer()  
  10. {  
  11.     return customer;  
  12. }  
  13.  
  14. @Id 
  15. @GeneratedValue(generator = "pkGenerator")  
  16. @GenericGenerator(name = "pkGenerator", strategy = "foreign",   
  17.    parameters = @Parameter(name = "property", value = "customer"))  
  18. public int getId()  
  19. {  
  20.     return id;  
  21. }  

其中@GenericGenerator注釋表示這個id屬性是外鍵,并且依賴于customer屬性對應的實體Bean的id屬性值(主鍵值)。

另外還要注意一點,由于t_referees表的id的自增類型已經去掉,而且該值依賴于t_customers表的id字段值,因此,就不能直接持久化Referee對象了,而在持久化Customer對象的同時,EJB3容器會自動將Referee持久化的。

【編輯推薦】

  1. Eclipse+JBoss+EJB3配置文件發布Session Bean
  2. Eclipse+JBoss+EJB3編寫有狀態的SessionBean
  3. Eclipse+JBoss+EJB3的Session Bean注釋方法
  4. Eclipse+JBoss+EJB3使用Session Bean的本地接口
  5. Eclipse+JBoss+EJB3編寫第一個實體Bean程序
     
責任編輯:book05 來源: blogjava
相關推薦

2009-06-24 15:51:47

Entity Bean一對多映射

2009-06-24 15:53:08

Entity Bean多對多映射

2009-06-24 15:59:04

消息驅動Bean

2009-06-24 15:56:47

實體Bean連接策略

2009-06-10 11:42:26

Session BeaEclipse+JBo

2009-06-10 12:34:01

Session BeaEclipse+JBo

2009-06-24 15:47:13

實體Bean

2009-06-10 11:09:40

配置文件SessionEclipse+JBo

2009-06-10 11:36:45

有狀態的SessionEclipse+JBo

2009-06-24 15:55:09

EclipseJBossJ2ee

2009-06-24 15:57:44

JPQL命名查詢

2009-06-10 12:54:35

無狀態的SessionEclipse+JBo

2009-06-24 15:58:15

EntityManag

2012-03-21 11:43:41

JavaHibernate

2009-08-17 10:34:51

NHibernate一

2009-06-24 16:00:00

2009-06-03 16:27:27

Hibernate一對一關系

2009-06-04 16:14:22

Hibernate一對Hibernate一對Hibernate多對

2009-06-26 10:15:54

面試HR

2009-09-24 12:05:35

點贊
收藏

51CTO技術棧公眾號

在线观看污污视频| 国精一区二区| 亚洲午夜精品一区二区三区他趣| 一本—道久久a久久精品蜜桃| 日韩欧美视频在线播放| 97av在线视频| 国产精品国产| 久久91精品国产91久久跳| 成人a在线观看高清电影| 精品少妇一区二区三区在线视频| 日本中文字幕在线播放| 在线中文字幕一区二区| 久久99久久| 色婷婷av一区二区三区软件 | 97超碰在线人人| 麻豆精品一区二区综合av| 麻豆蜜桃91| 久久精品一本| 日韩国产一区久久| 日韩av在线发布| 亚洲欧美国产精品桃花| 国产一区二区毛片| 99色这里只有精品| 国产女主播视频一区二区| 奇米影视四色在线| 亚洲一区二区三区精品在线| 在线免费观看你懂的| 欧美日韩国产片| 成人免费观看在线观看| 自拍偷拍亚洲一区| 波多野结衣欧美| 国产精品美女av| 在线观看日韩av电影| 亚洲精品9999| 99在线精品免费| 成人免费在线观看视频网站| 亚洲成在人线在线播放| 久cao在线| 中文字幕精品在线视频| 久久aimee| 鬼打鬼之黄金道士1992林正英| 久久一二三区| 草草久久久无码国产专区| 综合网在线视频| 91精品大全| 一本色道久久综合亚洲精品小说| 国产麻豆精品| 成人网欧美在线视频| 久久精品成人| 日本熟妇人妻xxxxx| 欧美日韩免费观看中文| 77thz桃花论族在线观看| 欧美成人免费小视频| 天天射—综合中文网| 天堂一区二区三区| 欧美激情在线免费观看| 成人18在线| 亚洲а∨天堂久久精品喷水| 视频精品国内| 国产欧美日韩伦理| 91网址在线看| 尤物在线视频| 久久久女女女女999久久| 午夜精品久久| 无码人妻丰满熟妇区96| 色综合天天做天天爱| 成人黄色免费短视频| 国产欧美一区二区三区四区| 国产精品123| 青青国产在线| 欧美成人免费全部| 一区二区三区四区五区在线| 蜜臀久久99精品久久久酒店新书| 欧美视频二区36p| 欧美日韩精品免费观看视欧美高清免费大片| 韩国国内大量揄拍精品视频| 美日韩精品视频| 天天干狠狠干| 亚洲女人被黑人巨大进入| 国产大片一区| av之家在线观看| 欧美一区二区在线不卡| 国产aⅴ精品一区二区三区久久| 亚洲在线不卡| 大荫蒂欧美视频另类xxxx| 成人在线观看免费播放| 国产日韩久久| 亚洲黄色录像片| 黑人一区二区三区| 精品一区久久久| 亚洲欧美一区二区三区孕妇| 亚洲精品动漫| 好吊妞www.84com只有这里才有精品 | 中文字幕亚洲精品视频| 久久久国产精品视频| 久久福利影视| 丝袜+亚洲+另类+欧美+变态| 久久香蕉国产线看观看网| 日本 国产 欧美色综合| 成人福利在线| 国产一区二区丝袜| 国产精品国产三级国产普通话蜜臀| 精品人人视频| 久99久视频| 欧美性猛交xxxx偷拍洗澡| 麻豆一区二区麻豆免费观看| 黄网站欧美内射| 日韩成人av网址| 日本亚洲天堂网| 日本美女在线中文版| 91成人免费在线观看| 亚洲成人午夜电影| 任我爽精品视频在线播放| 少妇高潮喷水久久久久久久久久| 日韩精品黄色网| 日本成人在线不卡视频| 超碰porn在线| 女女同性女同一区二区三区91| 日韩欧美一区视频| 久久综合88| 最近最好的中文字幕2019免费| 九九热精品视频国产| 不卡一区中文字幕| 久久天天久久| 黄色av免费在线播放| 啊v视频在线一区二区三区| 狠狠久久亚洲欧美| 中文字幕资源网在线观看免费 | 久久婷婷一区| av在线播放免费| 国产aⅴ精品一区二区三区黄| 五月天一区二区三区| 成人91在线| 日韩三级电影网| 国产福利久久| 欧美精选午夜久久久乱码6080| 中日韩视频在线观看| 成人免费看片| 亚洲午夜精品一区二区| 国产午夜精品美女视频明星a级| 极品少妇一区二区| 外国电影一区二区| 簧片在线免费看| 欧洲精品毛片网站| 欧美日韩亚洲精品内裤| 黄色精品一区| 视频在线观看入口黄最新永久免费国产 | 久久青青草综合| 欧美精品一区二区三| 国产成人午夜精品影院观看视频| 日韩成人在线电影| 成人免费网站视频www| 成人福利视频在线观看| 日韩欧美国产免费播放| 首页国产欧美日韩丝袜| 青青青国产精品| 2023欧美最顶级a∨艳星| 亚洲va久久久噜噜噜久久天堂| 欧美日韩综合一区| 奇米色一区二区三区四区| 九九热这里有精品| 国产xxxxx| 国产一区精品在线| 国产午夜一区二区| 亚洲女子a中天字幕| 亚洲小说区图片区| 欧美韩国亚洲| 22288色视频在线观看| 国产伦视频一区二区三区| 亚洲国产天堂久久综合网| www国产精品av| 精品视频97| 欧美家庭影院| 男女视频在线看| 高清国语自产拍免费一区二区三区| 精品亚洲一区二区| 一区二区三区在线影院| 奇米色777欧美一区二区| baoyu135国产精品免费| 麻豆最新免费在线视频| 亚洲色精品三区二区一区| 国产精品99久久久久久久| www.日韩.com| 欧美日韩美少妇| 久久蜜桃av一区二区天堂| 亚洲免费二区| 在线观看欧美| 黄色动漫在线观看| 欧美18 19xxx| 亚洲精品9999| 国产精品自拍网| 亚洲网站在线观看| 懂色av一区二区三区| 成人午夜视频福利| 欧美日韩亚洲一区三区| 天堂精品在线视频| 9191在线播放| 最新天堂资源在线| a√天堂在线观看| 日韩av影视|