}
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 |
+----+--------------+-----------+
一般的一对多关系就这么用了