jpa一对多

package com.demo.beans;


import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;


@Entity(name="Phones")
public class Phone {
 @Id
 private int phoneId;
 private int phoneNumber;


@ManyToOne(cascade=CascadeType.ALL)
 @JoinColumn(name="employeeId")
 private Employee employee;


public int getPhoneId() {
 return phoneId;
 }
 public void setPhoneId(int phoneId) {
 this.phoneId = phoneId;
 }
 public int getPhoneNumber() {
 return phoneNumber;
 }
 public void setPhoneNumber(int phoneNumber) {
 this.phoneNumber = phoneNumber;
 }
 public Employee getEmployee() {
 return employee;
 }
 public void setEmployee(Employee employee) {
 this.employee = employee;
 }


}



package com.demo.beans;


import java.util.Collection;
import java.util.List;
import java.util.Set;


import javax.persistence.CascadeType;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;




@Entity
@EntityListeners(MyMonitor.class)
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
 private int id;




 private String employeeName;


 
 @ElementCollection(targetClass = EmployeePeriod.class)
 private Collection employeePeriod;
 @ElementCollection
 private Set<String> nickName;
 
@OneToMany(mappedBy="employee", cascade=CascadeType.ALL)
 private List<Phone> phones;




@OneToOne(cascade=CascadeType.ALL)
 @JoinColumn(name="AddressId")
 private Address address;


public Address getAddress() {
 return address;
 }


public void setAddress(Address address) {
 this.address = address;
 }




public Collection getEmployeePeriod() {
    return employeePeriod;
}


public void setEmployeePeriod(Collection employeePeriod) {
    this.employeePeriod = employeePeriod;
}


public Set<String> getNickName() {
    return nickName;
}


public void setNickName(Set<String> nickName) {
    this.nickName = nickName;
}


public String getEmployeeName() {
 return employeeName;
 }


public int getId() {
    return id;
}


public void setId(int id) {
    this.id = id;
}


public void setEmployeeName(String employeeName) {
 this.employeeName = employeeName;
 }


public List getPhones() {
 return phones;
 }


public void setPhones(List phones) {
 this.phones = phones;
 }


}



 Employee employee = new Employee();
        
        
        employee.setEmployeeName("John Bai");
        Phone phone = new Phone();
        phone.setPhoneId(1);
      
        phone.setPhoneNumber(123);


        
        Phone phone2 = new Phone();
        phone2.setPhoneId(2);
      
        phone2.setPhoneNumber(123);
        
        phone2.setEmployee(employee);
        List<Phone> l = new LinkedList<Phone>();
        l.add(phone);
        l.add(phone2);
        employee.setPhones(l);
        userRepository.addEmployee(employee);


注意到第一个手机对象没有设置employee,结果后台数据库中表的记录如下:

mysql> select * from phones;
+---------+-------------+------------+
| phoneId | phoneNumber | employeeId |
+---------+-------------+------------+
|       1 |         123 |       NULL |
|       2 |         123 |          5 |
+---------+-------------+------------+
2 rows in set (0.00 sec)


mysql> select * from employee;
+----+--------------+-----------+
| id | employeeName | AddressId |
+----+--------------+-----------+
|  1 | John Smith   |         1 |
|  2 | John Bai     |      NULL |
|  5 | John Bai     |      NULL |
+----+--------------+-----------+


一般的一对多关系就这么用了


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值