package edu.ualberta.med.biobank.model; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.validation.constraints.NotNull; import org.hibernate.annotations.Cascade; @Entity @Table(name = "ORIGIN_INFO") public class OriginInfo extends AbstractBiobankModel { private static final long serialVersionUID = 1L; private Set<Comment> comments = new HashSet<Comment>(0); private Set<Specimen> specimens = new HashSet<Specimen>(0); private ShipmentInfo shipmentInfo; private Center center; private Site receiverSite; @ManyToMany(cascade = CascadeType.REMOVE, fetch = FetchType.LAZY) @JoinTable(name = "ORIGIN_INFO_COMMENT", joinColumns = { @JoinColumn(name = "ORIGIN_INFO_ID", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "COMMENT_ID", unique = true, nullable = false, updatable = false) }) public Set<Comment> getComments() { return this.comments; } public void setComments(Set<Comment> comments) { this.comments = comments; } @OneToMany(fetch = FetchType.LAZY, mappedBy = "originInfo") @Cascade({ org.hibernate.annotations.CascadeType.SAVE_UPDATE }) public Set<Specimen> getSpecimens() { return this.specimens; } public void setSpecimens(Set<Specimen> specimens) { this.specimens = specimens; } @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumn(name = "SHIPMENT_INFO_ID", unique = true) public ShipmentInfo getShipmentInfo() { return this.shipmentInfo; } public void setShipmentInfo(ShipmentInfo shipmentInfo) { this.shipmentInfo = shipmentInfo; } @NotNull(message = "{edu.ualberta.med.biobank.model.OriginInfo.center.NotNull}") @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "CENTER_ID", nullable = false) public Center getCenter() { return this.center; } public void setCenter(Center center) { this.center = center; } @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "RECEIVER_SITE_ID") public Site getReceiverSite() { return this.receiverSite; } public void setReceiverSite(Site receiverSite) { this.receiverSite = receiverSite; } }