import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
@EntityListeners(MyMonitor.class)
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String employeeName;
@Embedded
private EmployeePeriod employeePeriod;
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 EmployeePeriod getEmployeePeriod() {
return employeePeriod;
}
public void setEmployeePeriod(EmployeePeriod employeePeriod) {
this.employeePeriod = employeePeriod;
}
}
package com.demo.beans;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Embeddable
public class EmployeePeriod {
@Column(name="EmployeeStartDate")
@Temporal(TemporalType.DATE)
private Date startDate;
@Column(name="EmployeeEndDate")
@Temporal(TemporalType.DATE)
private Date endDate;
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
}
在持久化对象后,数据库中的表如下:
mysql> select * from employee;
+----+--------------+-----------------+-------------------+
| id | employeeName | EmployeeEndDate | EmployeeStartDate |
+----+--------------+-----------------+-------------------+
| 1| John Smith | 2015-02-13 | 2015-02-13 |
+----+--------------+-----------------+-------------------+
@AttributeOverrides的使用
修改上面的employee类
package com.demo.beans;
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
@EntityListeners(MyMonitor.class)
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String employeeName;
@Embedded
@AttributeOverrides({@AttributeOverride(name="startDate",column=@Column(name="begin")),
@AttributeOverride(name="endDate",column=@Column(name="end"))
}
)
private EmployeePeriod employeePeriod;
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 EmployeePeriod getEmployeePeriod() {
return employeePeriod;
}
public void setEmployeePeriod(EmployeePeriod employeePeriod) {
this.employeePeriod = employeePeriod;
}
}
保存后的数据库中记录如下:
mysql> select * from employee;
+----+--------------+------------+------------+
| id | employeeName | end | begin |
+----+--------------+------------+------------+
| 1 | John Smith | 2015-02-13 | 2015-02-13 |
+----+--------------+------------+------------+
1 row in set (0.00 sec)