package entity;

import javax.persistence.*;

@Entity
@Table(name = "SubmitSeed")
public class SubmitSeed {

    @EmbeddedId
    private SubmitSeedId id;

    @ManyToOne(optional = false)
    @JoinColumn(name = "beg_id", referencedColumnName = "beg_id", foreignKey = @ForeignKey(name = "fk_ss_beg"))
    private BegInfo begInfo;

    @ManyToOne(optional = false)
    @JoinColumn(name = "seed_id", referencedColumnName = "seed_id", foreignKey = @ForeignKey(name = "fk_ss_seed"))
    private Seed seed;

    @Column(name = "votes", nullable = false)
    private int votes;

    public SubmitSeed() {}

    public SubmitSeedId getId() {
        return id;
    }

    public void setId(SubmitSeedId id) {
        this.id = id;
    }

    // getters and setters for begInfo, seed, and votes
}
