package com.wesabe.grendel.entities; import static com.google.common.base.Objects.equal; import java.io.Serializable; import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import org.hibernate.annotations.ForeignKey; import com.wesabe.grendel.util.HashCode; /** * A composite primary key for {@link Document}, consisting of an owner (a * {@link User}) and a name (a {@link String}. * * @author coda */ public class DocumentPK implements Serializable { private static final long serialVersionUID = -4514388507586009635L; private String name; @ManyToOne(fetch=FetchType.LAZY) @ForeignKey(name="FK_DOCUMENT_TO_OWNER") @JoinColumn(name="owner_id", nullable=false) private User owner; @Deprecated public DocumentPK() { // for Hibernate usage only } @Override public int hashCode() { return HashCode.calculate(getClass(), name, owner); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof DocumentPK)) { return false; } final DocumentPK that = (DocumentPK) obj; return equal(name, that.name) && equal(owner, that.owner); } }