Floor.java

  1. package info.ejava.examples.ejb.ejbjpa.bo;

  2. import java.io.Serializable;
  3. import java.util.LinkedList;
  4. import java.util.List;

  5. import javax.persistence.CascadeType;
  6. import javax.persistence.Column;
  7. import javax.persistence.Entity;
  8. import javax.persistence.FetchType;
  9. import javax.persistence.Id;
  10. import javax.persistence.NamedQueries;
  11. import javax.persistence.NamedQuery;
  12. import javax.persistence.OneToMany;
  13. import javax.persistence.OrderBy;
  14. import javax.persistence.Table;

  15. @Entity
  16. @Table(name="EJBJPA_FLOOR")
  17. @NamedQueries({
  18.     @NamedQuery(name="Floor.getFloors",
  19.             query="select f from Floor f order by level"),
  20.     @NamedQuery(name="Floor.fetchFloor",
  21.             query="select f from Floor f "
  22.                     + "join fetch f.rooms r "
  23.                     + "join fetch r.occupant "
  24.                     + "where f.level=:level")
  25. })
  26. public class Floor implements Serializable {
  27.     private static final long serialVersionUID = 1L;

  28.     @Id
  29.     @Column(name="LEVEL", nullable=false)
  30.     int level;
  31.    
  32.     @OneToMany(mappedBy="floor",
  33.             fetch=FetchType.LAZY,
  34.             cascade={CascadeType.PERSIST, CascadeType.REMOVE, CascadeType.DETACH},
  35.             orphanRemoval=true)
  36.     @OrderBy("number")
  37.     List<Room> rooms;
  38.    
  39.     protected Floor() {}
  40.     public Floor(int level) {
  41.         this.level = level;
  42.     }
  43.        
  44.     public int getLevel() { return level; }

  45.     public List<Room> getRooms() { return rooms; }
  46.     public void setRooms(List<Room> rooms) {
  47.         this.rooms = rooms;
  48.     }
  49.     public Floor withRoom(Room room) {
  50.         if (rooms==null) {
  51.             rooms = new LinkedList<Room>();
  52.         }
  53.         if (room!=null) {
  54.             rooms.add(room);
  55.         }
  56.         return this;
  57.     }

  58.     @Override
  59.     public String toString() {
  60.         StringBuilder builder = new StringBuilder();
  61.         builder.append("Floor [level=").append(level)
  62.             .append(", rooms={").append("\n");
  63.         if (rooms!=null) { for (Room room: rooms) {
  64.             builder.append(room).append("\n");
  65.         }}
  66.         builder.append("}");
  67.         return builder.toString();
  68.     }
  69. }