The following code shows how to do unidirectional one to one mapping.
The following code is from PersonDaoImpl.java.
package com.java2s.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; }
The following code is from Professor.java.
package com.java2s.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(); } }
The following code is from ParkingSpace.java.
package com.java2s.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(); } }
The following is the database dump.
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