JPA教程 - JPA单向一对一映射示例
以下代码显示了如何进行单向一对一映射。
例子
下面的代码来自PersonDaoImpl.java。package cn.w3cschool.common;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.transaction.annotation.Transactional;
@Transactional
public class PersonDaoImpl {
public void test() {
Professor emp = new Professor();
emp.setName("name");
emp.setSalary(12345);
ParkingSpace ps = new ParkingSpace();
ps.setLot(1);
ps.setLocation("East");
emp.setParkingSpace(ps);
em.persist(ps);
em.persist(emp);
}
@PersistenceContext
private EntityManager em;
}
以下代码来自Professor.java。package cn.w3cschool.common;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
@Entity
public class Professor {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
private String name;
private long salary;
@OneToOne
@JoinColumn(name="PSPACE_ID")
private ParkingSpace parkingSpace;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getSalary() {
return salary;
}
public void setSalary(long salary) {
this.salary = salary;
}
public ParkingSpace getParkingSpace() {
return parkingSpace;
}
public void setParkingSpace(ParkingSpace parkingSpace) {
this.parkingSpace = parkingSpace;
}
public String toString() {
return "Employee id: " + getId() + " name: " + getName() +
" with " + getParkingSpace();
}
}
下面的代码来自ParkingSpace.java。package cn.w3cschool.common;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="PARKING_SPACE")
public class ParkingSpace {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
private int lot;
private String location;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getLot() {
return lot;
}
public void setLot(int lot) {
this.lot = lot;
}
public String getLocation() {
return location;
}
public void setLocation(String deptName) {
this.location = deptName;
}
public String toString() {
return "ParkingSpace id: " + getId() + " lot: " + getLot() +
", location: " + getLocation();
}
}下载 OneToOne_Unidirectional.zip
以下是数据库转储。Table Name: PARKING_SPACE
Row:
Column Name: ID,
Column Type: INTEGER:
Column Value: 1
Column Name: LOCATION,
Column Type: VARCHAR:
Column Value: East
Column Name: LOT,
Column Type: INTEGER:
Column Value: 1
Table Name: PROFESSOR
Row:
Column Name: ID,
Column Type: INTEGER:
Column Value: 1
Column Name: NAME,
Column Type: VARCHAR:
Column Value: name
Column Name: SALARY,
Column Type: BIGINT:
Column Value: 12345
Column Name: PSPACE_ID,
Column Type: INTEGER:
Column Value: 1