package org.dicadeveloper.weplantaforest.projects;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.dicadeveloper.weplantaforest.trees.Tree;
import org.dicadeveloper.weplantaforest.treetypes.TreeType;
import org.dicadeveloper.weplantaforest.views.Views;
import com.fasterxml.jackson.annotation.JsonView;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Entity
@ToString
@Getter
@Setter
@EqualsAndHashCode
@Table(name = "PlantArticle")
public class ProjectArticle {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "_articleId")
private Long articleId;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "_plant__plantId", nullable = false)
@JsonView(Views.PlantedTree.class)
private Project project;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "_treeType_treeTypeId", nullable = false)
@JsonView(Views.ProjectArticle.class)
private TreeType treeType;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "_price__priceId", nullable = false)
@JsonView(Views.ProjectArticle.class)
private Price price;
@Column(name = "_description", length = 20000)
private String description;
@Column(name = "_amount")
@JsonView(Views.ProjectArticle.class)
private Long amount;
@Transient
@JsonView(Views.ProjectArticle.class)
private Long alreadyPlanted;
@OneToMany(mappedBy = "projectArticle")
private List<Tree> trees;
}