• 多对一双向关联


    ps:双向关联与单向关联的区别在于

    1、双向关联:A能推出B,B也能推出A。

      单向关联,只能由A推出B或者是B推出A。

    例如:一个小组有多个员工,一个员工对应一个组。从员工的角度说是多对一,从小组的角度是一对多。

     1 package com.model;
     2 
     3 import java.util.Set;
     4 
     5 import javax.persistence.Entity;
     6 import javax.persistence.OneToMany;
     7 import javax.persistence.Table;
     8 
     9 @Entity
    10 @Table(name="group")
    11 public class Group {
    12     private Integer id;
    13     private String groupName;
    14     private Set<Worker> workers;
    15     
    16     @OneToMany(mappedBy="group")
    17     public Set<Worker> getWorkers() {
    18         return workers;
    19     }
    20     public void setWorkers(Set<Worker> workers) {
    21         this.workers = workers;
    22     }
    23     public Integer getId() {
    24         return id;
    25     }
    26     public void setId(Integer id) {
    27         this.id = id;
    28     }
    29     public String getGroupName() {
    30         return groupName;
    31     }
    32     public void setGroupName(String groupName) {
    33         this.groupName = groupName;
    34     }
    35 }
    Group
      1 package com.model;
      2 
      3 import java.io.Serializable;
      4 import java.util.Date;
      5 
      6 import javax.persistence.Column;
      7 import javax.persistence.Entity;
      8 import javax.persistence.GeneratedValue;
      9 import javax.persistence.GenerationType;
     10 import javax.persistence.Id;
     11 import javax.persistence.JoinColumn;
     12 import javax.persistence.ManyToOne;
     13 import javax.persistence.Table;
     14 
     15 @Entity
     16 @Table(name="worker")
     17 public class Worker implements Serializable{
     18     /**
     19      * @author yzy
     20      * @2014年11月1日15:31:08
     21      */
     22     private static final long serialVersionUID = 1L;
     23     private Integer id;
     24     private String name;
     25     private String password;
     26     private Integer sex;
     27     private Integer age;
     28     private Date birthdate;
     29     private Group group;
     30     private String position;
     31     private String telephone;
     32     private Date enterDate;
     33     private Float performance;
     34     private Integer gold;
     35     
     36     public Worker(){
     37         
     38     }
     39     
     40     @Id @GeneratedValue(strategy=GenerationType.AUTO)
     41     @Column(name="worker_id")
     42     public Integer getId() {
     43         return id;
     44     }
     45     public void setId(Integer id) {
     46         this.id = id;
     47     }
     48     @Column(name="worker_name")
     49     public String getName() {
     50         return name;
     51     }
     52     public void setName(String name) {
     53         this.name = name;
     54     }
     55     @Column(name="worker_password")
     56     public String getPassword() {
     57         return password;
     58     }
     59     public void setPassword(String password) {
     60         this.password = password;
     61     }
     62     @Column(name="worker_sex")
     63     public Integer getSex() {
     64         return sex;
     65     }
     66     public void setSex(Integer sex) {
     67         this.sex = sex;
     68     }
     69     @Column(name="worker_age")
     70     public Integer getAge() {
     71         return age;
     72     }
     73     public void setAge(Integer age) {
     74         this.age = age;
     75     }
     76     @Column(name="worker_birthdate")
     77     public Date getBirthdate() {
     78         return birthdate;
     79     }
     80     public void setBirthdate(Date birthdate) {
     81         this.birthdate = birthdate;
     82     }
     83     @ManyToOne//多对一,一个员工只能在一个小组,一个小组有多名成员
     84     @JoinColumn(name="group_id")
     85     public Group getGroup() {
     86         return group;
     87     }
     88     public void setGroup(Group group) {
     89         this.group = group;
     90     }
     91     @Column(name="worker_position")
     92     public String getPosition() {
     93         return position;
     94     }
     95     public void setPosition(String position) {
     96         this.position = position;
     97     }
     98     @Column(name="worker_telephone")
     99     public String getTelephone() {
    100         return telephone;
    101     }
    102     public void setTelephone(String telephone) {
    103         this.telephone = telephone;
    104     }
    105     @Column(name="worker_enterDate")
    106     public Date getEnterDate() {
    107         return enterDate;
    108     }
    109     public void setEnterDate(Date enterDate) {
    110         this.enterDate = enterDate;
    111     }
    112     @Column(name="worker_performance")
    113     public Float getPerformance() {
    114         return performance;
    115     }
    116     public void setPerformance(Float performance) {
    117         this.performance = performance;
    118     }
    119     @Column(name="worker_gold")
    120     public Integer getGold() {
    121         return gold;
    122     }
    123     public void setGold(Integer gold) {
    124         this.gold = gold;
    125     }
    126     
    127     
    128 }
    Worker

    一对多时在多的那一方设置一的外键,如上是在Worker中设置Group的外键。双向关联必设 mappedBy属性,总是由多的一方来维护。
    举例:员工和组 一个group可以有多个worker,这里从group来说是一对多 而多个worker可以属于一个group 这里从worker来说是多对一 所以
    不管是多对一还是一对多 都是在多的那方加外键。也就是说双向关联时在一的那一方设置mappedBy,即在Group实体中的getWorkers()方法上头加@OneToMany(mappedBy="group")

  • 相关阅读:
    转贴WP7开发资源大收集
    Howto: 利用Web Camera模拟Windows Phone 7的重力加速度传感器
    File Transfer over Socket Between Windows Mobile Devices
    OpenGL ES Wrapper on Windows Mobile
    利用WiFi在Windows Mobile上建立Adhoc网络
    分享一个WebMap引擎(MapBar)
    iNove改进版(仿NeoEase的paled主题)
    ICDsoft主机半价优惠码推荐
    motorola XT615手机开箱照
    2011RTIC论坛回顾
  • 原文地址:https://www.cnblogs.com/frankwin608/p/4084745.html
Copyright © 2020-2023  润新知