package auth.models; import auth.types.RoleType; import models.AuditedModel; import models.UserPreferenceModel; import play.data.format.Formats; import play.data.validation.Constraints; import com.avaje.ebean.Model; import javax.persistence.*; import java.util.List; @Entity @Table(name = "POS_USER") public class User extends AuditedModel { public static final Model.Finder<Long, User> find = new Model.Finder<>(User.class); @Id public Integer id; public String passwordHash; public String name; public String username; @Constraints.Required @Formats.NonEmpty @Enumerated(EnumType.STRING) @Column(nullable = false) public RoleType role; @OneToOne(mappedBy = "user", optional = false, cascade = CascadeType.ALL) public UserPreferenceModel preferences; public static User findById(Long id) { return find.byId(id); } public static User findByUsername(String username) { return find.fetch("preferences").where().eq("username", username).findUnique(); } public static List<User> findAll() { return find.all(); } }