The following code shows how to remove related entities with cascade actions.
The following code is from PersonDaoImpl.java.
package com.java2s.common; import java.util.Date; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.springframework.transaction.annotation.Transactional; @Transactional public class PersonDaoImpl { public void test() { Employee emp = new Employee(); emp.setName("Tom"); emp.setId(1); Phone ph = new Phone(); ph.setEmployee(emp); ph.setNumber("1234567890"); ParkingSpace ps = new ParkingSpace(); ps.setEmployee(emp); ps.setLocation("Dept"); emp.setParkingSpace(ps); emp.getPhones().add(ph); em.persist(emp); emp = em.find(Employee.class, 1); em.remove(emp); } @PersistenceContext private EntityManager em; }
The following code is from Phone.java.
package com.java2s.common; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.OneToOne; @Entity public class Phone { @Id private long id; private String number; private String type; @OneToOne Employee employee; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getNumber() { return number; } public void setNumber(String phoneNo) { this.number = phoneNo; } public String getType() { return type; } public void setType(String phoneType) { this.type = phoneType; } public Employee getEmployee() { return employee; } public void setEmployee(Employee employee) { this.employee = employee; } public String toString() { return "Phone id: " + getId() + ", no: " + getNumber() + ", type: " + getType(); } }
The following code is from Employee.java.
package com.java2s.common; import java.util.ArrayList; import java.util.Collection; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.OneToOne; @Entity public class Employee { @Id private int id; private String name; @OneToOne(cascade={CascadeType.PERSIST, CascadeType.REMOVE}) @JoinColumn(name="PSPACE_ID") ParkingSpace parkingSpace; @OneToMany(cascade={CascadeType.PERSIST, CascadeType.REMOVE}, mappedBy="employee") Collection<Phone> phones; public Employee() { phones = new ArrayList<Phone>(); } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public Collection<Phone> getPhones() { return phones; } public void setPhones(Collection<Phone> phones) { this.phones = phones; } public void setName(String name) { this.name = name; } 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.Id; import javax.persistence.OneToOne; import javax.persistence.Table; @Entity @Table(name="PARKING_SPACE") public class ParkingSpace { @Id private int id; private int lot; private String location; @OneToOne(mappedBy="parkingSpace") private Employee employee; 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 Employee getEmployee() { return employee; } public void setEmployee(Employee employee) { this.employee = employee; } public String toString() { return "ParkingSpace id: " + getId() + " lot: " + getLot() + ", location: " + getLocation(); } }
The following is the database dump.
Table Name: EMPLOYEE Table Name: PARKING_SPACE Table Name: PHONE