Floor.java
package info.ejava.examples.ejb.ejbjpa.bo;
import java.io.Serializable;
import java.util.LinkedList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table;
@Entity
@Table(name="EJBJPA_FLOOR")
@NamedQueries({
@NamedQuery(name="Floor.getFloors",
query="select f from Floor f order by level"),
@NamedQuery(name="Floor.fetchFloor",
query="select f from Floor f "
+ "join fetch f.rooms r "
+ "join fetch r.occupant "
+ "where f.level=:level")
})
public class Floor implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="LEVEL", nullable=false)
int level;
@OneToMany(mappedBy="floor",
fetch=FetchType.LAZY,
cascade={CascadeType.PERSIST, CascadeType.REMOVE, CascadeType.DETACH},
orphanRemoval=true)
@OrderBy("number")
List<Room> rooms;
protected Floor() {}
public Floor(int level) {
this.level = level;
}
public int getLevel() { return level; }
public List<Room> getRooms() { return rooms; }
public void setRooms(List<Room> rooms) {
this.rooms = rooms;
}
public Floor withRoom(Room room) {
if (rooms==null) {
rooms = new LinkedList<Room>();
}
if (room!=null) {
rooms.add(room);
}
return this;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("Floor [level=").append(level)
.append(", rooms={").append("\n");
if (rooms!=null) { for (Room room: rooms) {
builder.append(room).append("\n");
}}
builder.append("}");
return builder.toString();
}
}