spring嵌套对象@Embedded使用

来源:互联网 发布:国美容美发软件下载 编辑:程序博客网 时间:2024/06/10 04:46
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
 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)

0 0
原创粉丝点击