Poll.java
package com.github.curriculeon.model;
import javax.persistence.*;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
@Entity
public class Poll {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String question;
private Instant createdAt;
private Instant resultsVisibleAt;
@OneToMany(mappedBy = "poll", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER)
private List<PollOption> options = new ArrayList<>();
public Poll() {}
public Poll(String question, Instant createdAt, Instant resultsVisibleAt) {
this.question = question;
this.createdAt = createdAt;
this.resultsVisibleAt = resultsVisibleAt;
}
public Long getId() {
return id;
}
public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
public Instant getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Instant createdAt) {
this.createdAt = createdAt;
}
public Instant getResultsVisibleAt() {
return resultsVisibleAt;
}
public void setResultsVisibleAt(Instant resultsVisibleAt) {
this.resultsVisibleAt = resultsVisibleAt;
}
public List<PollOption> getOptions() {
return options;
}
public void setOptions(List<PollOption> options) {
this.options.clear();
if (options != null) this.options.addAll(options);
for (PollOption o : this.options) {
o.setPoll(this);
}
}
public void addOption(PollOption option) {
option.setPoll(this);
this.options.add(option);
}
}