package hu.sch.domain; import hu.sch.domain.user.User; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Embedded; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.validation.constraints.NotNull; /** * A PointHistory entity is representing a user's community points for a given * semester and group. * * @author tomi * @since 2.6.3 * */ @Entity @Table(name = "point_history") @SequenceGenerator(name = "point_history_seq", allocationSize = 1, sequenceName = "point_history_seq") @NamedQueries({ @NamedQuery(name = PointHistory.findBySemester, query = "SELECT ph FROM PointHistory ph JOIN FETCH ph.user WHERE ph.semester = :semester"), @NamedQuery(name = PointHistory.findByUser, query = "SELECT ph FROM PointHistory ph WHERE ph.user = :user ORDER BY ph.semester DESC"), }) public class PointHistory implements Serializable { public static final String findBySemester = "findBySemester"; public static final String findByUser = "findByUser"; @Id @GeneratedValue(generator = "point_history_seq") @Column(name = "id") private Long id; @ManyToOne(fetch = FetchType.LAZY, optional = false) @JoinColumn(name = "usr_id") private User user; @Column(name = "point") @NotNull private Integer point; @Embedded @NotNull private Semester semester; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public Integer getPoint() { return point; } public void setPoint(Integer point) { this.point = point; } public Semester getSemester() { return semester; } public void setSemester(Semester semester) { this.semester = semester; } }