JAP映射关联关系
1. 单向多对一
Order(多)–>Customer(一)
关键点:
Order里有一个Customer的成员
/**
*@JoinColumn:来映射外键
*@ManyToOne:映射多对一的关系
*/
@JoinColumn(name="customer_id")
@ManyToOne(fetch=FetchType.LAZY)//使用懒加载
public Customer getCustomer() {
return customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
1. Order.java:
package com.bart.jpa.beans;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Table(name="jpa_order")
@Entity
public class Order {
@Override
public String toString() {
return "Order [id=" + id + ", name=" + name + ", customer="
+customer + "]";
}
@Column(length=10,nullable=false)
@GeneratedValue(strategy=GenerationType.AUTO)
@Id
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name="o_name",length=20,nullable=false)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/**
*@JoinColumn:来映射外键
*@ManyToOne:映射多对一的关系
*/
@JoinColumn(name="customer_id")
@ManyToOne(fetch=FetchType.LAZY)//使用懒加载
public Customer getCustomer() {
return customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
private Integer id;
private String name;
private Customer customer;
public Order(String name, Customer customer) {
super();
this.name = name;
this.customer = customer;
}
public Order(String name) {
super();
this.name = name;
}
public Order() {
super();
}
}
2. Customer.java
package com.bart.jpa.beans;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Cacheable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
/**
* 使用JPA的注解创建对应的数据表
* @author hp
*
*/
@Cacheable(true)
@Table(name="JPA_CUSTOMER")
@Entity
public class Customer {
@Override
public String toString() {
return "Customer [id=" + id + ", lastName=" + lastName + ", email="
+ email + ", age=" + age + ", createTime=" + createTime
+ ", birth=" + birth + "]";
}
private Integer id;
private String lastName;
private String email;
private Integer age;
private Date createTime;
private Date birth;
//private Set<Order> orders= new HashSet<Order>();
public Customer(String lastName, String email, Integer age,
Date createTime) {
super();
this.lastName = lastName;
this.email = email;
this.age = age;
this.createTime = createTime;
}
public Customer() {
super();
}
@GeneratedValue(strategy=GenerationType.AUTO)//主键自动生成
@Id
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name="last_name",length=20,nullable=false)
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Column(length=30)
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Column(length=3)
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Temporal(TemporalType.DATE)//显示格式(yyyy-MM-dd)
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
@Temporal(TemporalType.TIMESTAMP)
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
@Transient//工具方法,表示不需要映射为数据表的一个列
public String getInfo(){
return "lastName:"+lastName+",email:"+email;
}
}