package object;

import java.util.Date;
import javax.persistence.*;

@Entity
@Table(name = "UserVotes")
public class UserVotes {
    @Id
    @Column(name = "user_id", length = 36, nullable = false)
    public String userId;

    @ManyToOne(optional = false)
    @JoinColumn(name = "user_id", referencedColumnName = "user_id", 
                foreignKey = @ForeignKey(name = "fk_user_votes_user"), 
                insertable = false, updatable = false)
    public User user;

    @Id
    @Column(name = "beg_id", length = 64, nullable = false)
    public String begId;

    @ManyToOne(optional = false)
    @JoinColumn(name = "beg_id", referencedColumnName = "beg_id", 
                foreignKey = @ForeignKey(name = "fk_user_votes_beg"), 
                insertable = false, updatable = false)
    public BegInfo begInfo;

    @Id
    @Column(name = "seed_id", length = 64, nullable = false)
    public String seedId;

    @ManyToOne(optional = false)
    @JoinColumn(name = "seed_id", referencedColumnName = "seed_id", 
                foreignKey = @ForeignKey(name = "fk_user_votes_seed"), 
                insertable = false, updatable = false)
    public Seed seed;

    @Column(name = "created_at", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    public Date createdAt;
}
