//$Id$
package org.hibernate.test.annotations.idmanytoone;

import java.io.Serializable;
import java.util.Set;
import javax.persistence.Embeddable;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.CascadeType;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;

/**
 * @author Emmanuel Bernard
 */
@Entity
public class Card {

	@Id
	private CardPrimaryKey primaryKey = new CardPrimaryKey();

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "primaryKey.card")
	private Set<CardField> fields;

	@ManyToOne
	private CardField mainCardField;

	@Embeddable
	public static class CardPrimaryKey implements Serializable {

		public CardPrimaryKey() {}

		@ManyToOne(optional = false)
		private Project project;

		public Project getProject() {
			return project;
		}

		public void setProject(Project project) {
			this.project = project;
		}

	}

	public Set<CardField> getFields() {
		return fields;
	}

	public void setFields(Set<CardField> fields) {
		this.fields = fields;
	}

	public CardPrimaryKey getPrimaryKey() {
		return primaryKey;
	}

	public void setPrimaryKey(CardPrimaryKey primaryKey) {
		this.primaryKey = primaryKey;
	}

	public CardField getMainCardField() {
		return mainCardField;
	}

	public void setMainCardField(CardField mainCardField) {
		this.mainCardField = mainCardField;
	}
}
