//$Id$ package org.hibernate.test.annotations.fetch; import java.io.Serializable; import java.util.Date; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.FetchMode; import org.hibernate.annotations.LazyToOne; import org.hibernate.annotations.LazyToOneOption; /** * @author Emmanuel Bernard */ @Entity @Table(name = "Stay") public class Stay implements Serializable { // member declaration private int id; private Person person; private Person oldPerson; private Person veryOldPerson; private Date startDate; private Date endDate; private String vessel; private String authoriser; private String comments; // constructors public Stay() { } public Stay(int id) { this.id = id; } public Stay(Person person, Date startDate, Date endDate, String vessel, String authoriser, String comments) { this.authoriser = authoriser; this.endDate = endDate; this.person = person; this.startDate = startDate; this.vessel = vessel; this.comments = comments; } // properties public String getAuthoriser() { return authoriser; } public void setAuthoriser(String authoriser) { this.authoriser = authoriser; } public String getComments() { return comments; } public void setComments(String comments) { this.comments = comments; } public Date getEndDate() { return endDate; } public void setEndDate(Date endDate) { this.endDate = endDate; } @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumn(name = "person") public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; } @ManyToOne(cascade = CascadeType.ALL) @LazyToOne(LazyToOneOption.PROXY) @Fetch(FetchMode.SELECT) @JoinColumn(name = "oldperson") public Person getOldPerson() { return oldPerson; } public void setOldPerson(Person oldPerson) { this.oldPerson = oldPerson; } @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @LazyToOne(LazyToOneOption.PROXY) @Fetch(FetchMode.JOIN) @JoinColumn(name = "veryoldperson") public Person getVeryOldPerson() { return veryOldPerson; } public void setVeryOldPerson(Person veryOldPerson) { this.veryOldPerson = veryOldPerson; } public Date getStartDate() { return startDate; } public void setStartDate(Date startDate) { this.startDate = startDate; } public String getVessel() { return vessel; } public void setVessel(String vessel) { this.vessel = vessel; } }