package org.optaconf.domain; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.OneToMany; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import org.apache.commons.lang3.builder.CompareToBuilder; import org.optaplanner.core.api.domain.solution.cloner.DeepPlanningClone; import com.fasterxml.jackson.annotation.JsonManagedReference; @DeepPlanningClone @Entity(name = "optaconf_speaker") public class Speaker extends AbstractConferencedPersistable implements Comparable<Speaker> { @NotNull @Size(max = 120) private String name; private Boolean rockstar = false; @OneToMany(mappedBy = "speaker", cascade = CascadeType.ALL, fetch = FetchType.EAGER) @JsonManagedReference private List<SpeakingRelation> speakingRelationList; public Speaker() { } public Speaker(Conference conference, String externalId, String name) { super(conference, externalId); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return name; } public Boolean getRockstar() { return rockstar; } public void setRockstar(Boolean rockstar) { this.rockstar = rockstar; } public List<SpeakingRelation> getSpeakingRelationList() { return speakingRelationList; } public void setSpeakingRelationList(List<SpeakingRelation> speakingRelationList) { this.speakingRelationList = speakingRelationList; } // ************************************************************************ // Real methods // ************************************************************************ @Override public int compareTo(Speaker other) { return new CompareToBuilder() .append(name, other.name) .append(id, other.id) .toComparison(); } }